定时器在单片机开发中是会被经常用到的,接下来我们一起在STM8中了解一下如何使用定时器。我们的目标是实现开发板出厂Demo程序功能,通过按键来控制LED闪烁的速度。
通过查看STM8S的用户手册可以,STM8S内部有三类6个定时器,其中定时器4比较适合作为时基来使用,这里我们使用定时器4实现一个1ms的定时。
根据STM8S的时钟树可以,定时器的时钟来源于单片机的主时钟,当单片机主频为16MHz是,定时器的时钟源也是16MHz。
定时器4是一个8位自动装载自增定时器,提供可编程的预分频,定时器溢出可以产生中断。
定时器4有3bit可编程预分频,可以实现1,2,4,8,16,32,64,128八种预分频值。
首先在main函数中配置系统时钟,这里采用内部高速时钟,经过一分频,也就是16MHz主频。
在main函数中配置定时器4,采用128分频,对于16MHz来说16 MHz / 128 = 125 000 Hz。 根据定时器计算公式TIM4_PERIOD = (0.001 * 125000 - 1) = 124 ,所以最终定时器重装载值TIM4_PERIOD为124。 接下来使能定时器4中断即可。经过以上配置,定时器就可以产生时间间隔为1ms的溢出中断了。
在stm8s_it.c中修改定时器4的中断函数,调用TimingDelay_Decrement函数后清中断。
在按键中断中调用SetDelayTime函数。
在main.c中定义变量和函数原型。
实现在终端中调用的几个函数,定时器中断产生时调用TimingDelay_Decrement函数,实现TimingDelay变量的递减。 Delay函数实现对递减变量TimingDelay进行赋值。 SetDelayTime函数则相应按键中断,改变延时的数值。
最后在主函数中的主循环调用延时和LED翻转函数,实现LED灯的闪烁。
编译下载后,就可以实现开发板出厂程序的功能,通过按键改变定时器计时长短,达到改变LED闪烁速度改变的效果了。 总结,STM8的定时器有8位和16位两种,8位定时器配合预分频器,可以满足大部分情况下的计时功能了。定时器的使用也不复杂,只要掌握了时钟源和预分频器以及重装载值计算公式,就可以使用定时器的定时功能了。 工程代码:
STM8S_StdPeriph_Lib.zip
(10.67 MB, 下载次数: 1)
|
STM8 的MCU有四个供电单元
【STM8-SO8】08-STM8L001J3的点灯
STM8单片机如何实现Bootloader
基于STM8的DALI (数字可寻址调光协议)
开源基于STM32的STM8脱机编程器
【ST MCU实战经验】之STM8中UART奇偶校验的使用方法
【思修电子STM8集合贴】龙顺宇STM8理论/实战视频/书籍/软件/
初次尝试STM8S001J3
分享STM8 风驰光盘的资料,是完整的(包括原理图+例程+PDF注释)
基于STM8的实验代码汇总分享
微信公众号
手机版
点评