基于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

继续阅读
意法半导体推出48引脚封装 扩大市面上唯一支持LoRa®的STM32WL系统芯片的选择范围

中国,2020年8月28日——意法半导体为其获奖产品STM32WLE5 *无线系统芯片(SoC)的产品组合新增一款QFN48封装,将该产品的诸多集成功能、能效性和多调制的灵活性赋能到多种工业无线应用上。

意法半导体发布STM32状态监测功能包,通过Cartesiam工具简化机器学习过程

中国,2020年7月29日——意法半导体发布一款免费的STM32软件功能包,让用户可以用微控制器探索套件快速创建、训练、部署工业状态监测智能边缘设备。

意法半导体为STM32Cube®生态系统增添新功能,提高软件开发效率

中国,2020年7月28日——意法半导体STM32Cube®软件开发生态系统发布软件更新,让用户更轻松地筛选软件示例,搜集和使用开发工具,自定义、使用和分享STM32Cube扩展软件包。

意法半导体通过两项并购,进一步增强STM32微控制器的无线连接功能

中国, 2020年7月20 日 – 横跨多重电子应用领域的全球领先的半导体供应商意法半导体,于日前宣布签署两项并购协议,收购超宽带技术专业设计公司BeSpoon的全部股本和Riot Micro公司的蜂窝物联网连接资产。在两项交易走完正常监管审批手续成交后,意法半导体将进一步提升其在无线连接技术方面的服务,特别是完善STM32微控制器和安全微控制器的产品规划。

让汽车ECU开发事半功倍,ST AutoDevKit工具包长啥样?

STM32 是工业和消费市场上非常成功的微控制器解决方案,SPC5 系列汽车微控制器也许大家还不大熟悉,不过在 AutoDevKit 生态匹配搭建的强大加持下,站在使用者的角度来看待问题,解决对方行业痛点,未来的 SPC5 也许可以成为汽车电子界的 STM32 也是很有可能的。