基于stm32通用定时器设置的学习心得

分享到:

stm32单片机的定时器资源相当丰富,它的定时器分为高级控制定时器、通用定时器和基本定时器,具体这些定时器资源在哪个系列的片子有就得看不同的片子的手册了。他们具体有什么区别,我也是刚接触这个,看他的数据手册介绍也是茫然,主要是刚开始摸,那些功能都没用到,反正用做定时作用的话哪种定时器都行。在这我就把我自己配置通用定时器的方法及心得简短做个总结,以防以后忘记了。我配置的是定时器2(TIM2)。

定时器设置
通用定时器的时钟可来自于外部或内部,选用默认即是采用内部的。通用定时器的时钟来源为APB1总线,所以首先,得将APB1外设时钟打开。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
其次,就是定时器的相关参数信息的配置,这些参数信息都在TIM_TimeBaseInitTypeDef这么一个结构体当中,所以得定义这么一个结构体变量。结构体中的有关成员含义如下:

TIM_TimeBaseInitStrcture.TIM_Prescaler = 0x1c20;  //时钟预分频系数,看单词意思就知道了,即是将APB1时钟进行相应分频得到一个合适的频率
TIM_TimeBaseInitStrcture.TIM_CounterMode = TIM_CounterMode_Up;  //计数模式
TIM_TimeBaseInitStrcture.TIM_Period = 0x270f;  //计数周期,即是往ARR寄存器中填的一个自动转载值,这个值等于目标值-1
TIM_TimeBaseInitStrcture.TIM_ClockDivision=TIM_CKD_DIV1;  //这是数字滤波器的相关设置,定时的时候不用外部时钟,所以这个设为0即可,TIM_CKD_DIV1这个就是等价于0,你要是设为其他值也不影

下面自然是初始化这个结构体当中的参数信息了。
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStrcture);
再次,就是定时器中断的相关配置了,在配置中断的时候特别一定要注意顺序,否则就会出问题,我一开始就是没注意这个顺序问题,看着错误还不知道怎么回事,还好后面被我发现,哈哈。在使能中断之前一定得先清掉中断中断标志位和中断挂起位,如下:

TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);

如果不先清掉挂起位和标志位,那么一使能中断,就立马进入中断服务函数,显然这不是我们想要的,我就被这个问题整了一下。接下来就是使能定时器了,TIM_Cmd(TIM2, ENABLE);这自不用说。
最后,就是配置NVIC嵌套向量中断控制寄存器了。

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);//the second parameter must be a multiple of 0x200
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//2 bits for pre-emption priority, 2 bits for subpriority
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

其实,我认为在主函数里调用定时器配置函数和NVIC配置函数时,应该先调用NVIC配置函数,因为先设置好中断分组等相关参数信息后,再去打开定时器,定时器中断就能按照NVIC的信息去工作。
接下来的就是在stm32f10x_it.c中写自己的中断服务函数了。
void TIM2_IRQHandler(void)
{
…………
}
到此,通用定时器配置成功。

 

STM32单片机中文官网
意法半导体/ST/STM

继续阅读
增强LoRaWAN使用体验,意法半导体升级免费嵌入式软件

中国,2018年8月8日——意法半导体推出符合LoRa-Alliance最新标准的LoRaWAN 1.0.3软件更新包,使STM32系列微控制器的I-CUBE-LRWAN扩展软件包保持最新、更加安全,让基于低功耗广域网(LPWAN)的物联网(IoT)应用空间更广阔。

【新品】STM32F7x0和STM32H7x0超值系列单片机,高性能+低价格

中国,2018年7月18日——作为意法半导体的STM32 *产品家族最新成员,STM32F7x0和H7x0超值系列(Value Lines) 微控制器(MCU)将为开发人员提供更高的灵活性。该系列产品适用于开发价格亲民、以性能为导向的实时物联网设备应用系统,同时不会影响目标应用的功能或网络安全性。

与非网专访ST曹锦东:STM32如何承担责任和探索未来

市场研究公司Gartner称,2017年全球物联网(IoT)设备数量将达到84亿,比2016年的64亿增长31%,2020年物联网设备数量将达到204亿,高速增长的市场蕴含着巨大的商机。物联网从架构上可以分为三个层次:网络层、传感层和应用层,三个层次都和MCU密不可分,从细小节点到传感中枢再到应用平台,MCU扮演着重要角色。

意法半导体推出直观的固件开发工具,加快物联网传感器设计进程

意法半导体的AlgoBuilder 固件开发工具能将写代码工作从固件开发中分离出来,让用户使用可立即编译的STM32 *微控制器(MCU)运行的函数库模块,在图形用户界面上创建传感器控制算法。以简化基于意法半导体MEMS传感器和MCU的物联网设备开发为宗旨,AlgoBuilder工具有助于快速创建并运行概念验证模型。

意法半导体收购图形用户界面软件专业开发公司Draupner Graphics

中国,2018年7月12日——横跨多重电子应用领域、全球领先的半导体供应商意法半导体宣布正式收购专业软件开发公司Draupner Graphics。Draupner Graphics是TouchGFX软件框架的开发商和供应商。TouchGFX为嵌入式图形用户界面(GUI)提供出色的图形处理性能和流畅的动画效果,同时对资源的需求和功耗极低。