打印
[STM8]

实验分享-【STM8-SO8-DISCO】5定时器

[复制链接]
300|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
定时器在单片机开发中是会被经常用到的,接下来我们一起在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位定时器配合预分频器,可以满足大部分情况下的计时功能了。定时器的使用也不复杂,只要掌握了时钟源和预分频器以及重装载值计算公式,就可以使用定时器的定时功能了。本文转载于【STM8-SO8-DISCO】5定时器
http://www.stmcu.org.cn/module/forum/thread-619216-1-1.html



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天都要开心呀

210

主题

505

帖子

4

粉丝