【摘要】:定时器功能强大,内容繁多,从《STM32F10xxx参考手册》讲述定时器的内容多达100页以上。使用定时器优点不但定时精度高,而且一旦开启定时器,CPU就可以继续执行其他程序,只有定时时间到,收到定时器中断请求才暂停当前程序,去响应执行中断服务程序。如4.2章节图4.7所示,使用定时器,完成三个LED循环闪亮,间隔1秒,即实现如图4.13所示的方波。图4.13三个LED输出方波时序图源程序代码如下所述。
定时器功能强大,内容繁多,从《STM32F10xxx参考手册》讲述定时器的内容多达100页以上。为了便于学习,本章节选用实例分析讲述。
例4.2用延时方式实现了三个LED循环闪亮,间隔时间约0.5秒。对于软件延时很难实现精确延时,同时在执行延时程序时占用CPU,程序效率很低。使用定时器优点不但定时精度高,而且一旦开启定时器,CPU就可以继续执行其他程序,只有定时时间到,收到定时器中断请求才暂停当前程序,去响应执行中断服务程序。执行完后中断服务程序自动返回,继续执行暂停了的当前程序,效率高。
【例4.5】如4.2章节图4.7所示,使用定时器(TIM3),完成三个LED循环闪亮,间隔1秒,即实现如图4.13所示的方波。
图4.13 三个LED输出方波时序图
源程序代码如下所述。
说明:
本例题定时为1秒,如果不是1秒,又该如何设置呢?
定时器的定时功能可通过以下公式来实现:(www.daowen.com)
计数脉冲数量=时间×输入时钟频率
其中输入时钟频率一般指系统时钟分频后的时钟,计数脉冲数量为分频后的脉冲数量,时间为指定的定时时间。
将固件库定时器配置结构体相关成员代入后得到如下公式:
TIM_Period取值范围为0~65535
TIM_Prescaler取值范围为0~65535
假设定时时间为10秒,系统时钟为72MHz;
TIM_Prescaler+1取值为36000,
则:TIM_Period+1=20000
注意:TIM_Period、TIM_Prescaler取值不能超限,若定时一个很长的时间,可使用允许的定时时间,通过对定时中断次数计数的方式来实现长时间的定时。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关基于物联网的STM32单片机应用与实践的文章