微信
二维码
1042116446@qq.com 15880513947
2023年06月29日 访客 漫威中国吧 262 0

STM32有多个定时器可供使用,且有多种使用方式,包括普通定时、PWM输出、输入捕获、触发ADC等。本篇文章主要介绍普通定时中断的使用。

前期准备:

  • STM32硬件电路板及仿真器(以STM32F072C8单片机为例)
  • Keil v5以上版本(MDK-ARM)

首先新建工程后,配置系统时钟为48MHz(参考上一篇GPIO使用中的配置步骤)。以TIM1为例,使能TIM1的时钟源为Internal Clock(即48MHz系统时钟),设置定时器的周期、分频系数等。假设定时周期为100ms,则设置参数如下图。

stm32定时器配置过程(STM32CubeMx教程3定时器基本应用)(1)

其中:

预分频值,取值范围为0~65535。

计数模式可以是 向上计数、向下计数、中间对齐计数等。

计数周期,对于16位定时器,取值范围为0~65535。

时钟分频因子, 可以选择不分频、二分频或四分频。

重复计数次数,表示定时器计数值达到计数周期n次后才产生中断。

自动重装,设置为Enable或Disable。

触发输出部分本节用不到,暂不做说明。

定时(溢出)周期 = (预分频值 1)*(计数周期 1)*分频因子*(重复计数次数 1) / 系统时钟48MHz,单位为秒。

上图中(999 1)*(4799 1)*1*1 / 48MHz = 0.1秒,即100ms。

定时器设置完成后,需要在NVIC Setting中打开定时器的溢出中断,TIM1作为高级定时器,其捕获比较中断(capture compare interrupt)和其它中断是独立的,而其它的普通定时器只有统一的一个中断源。这里只用到了溢出(update)中断,所以只打开溢出中断即可。

stm32定时器配置过程(STM32CubeMx教程3定时器基本应用)(2)

设置完成后点击 Generate Code生成代码。

可以看到定时器的初始化已经完成,但是此时中断还没有打开,需要自己添加代码启动定时器打开中断。

stm32定时器配置过程(STM32CubeMx教程3定时器基本应用)(3)

同时,需要自己编写中断回调函数,假设程序功能是定时100ms时间到后翻转LED端口,则代码如下。

stm32定时器配置过程(STM32CubeMx教程3定时器基本应用)(4)

编译程序后下载到电路板,可以看到相应的LED灯按照设定的周期开始闪烁。

定时器的作普通定时用,使用较简单,后面将介绍PWM模式、输入捕获比较、编码器模式等的使用。

,

评论

精彩评论