你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM8-SO8-DISCO】5定时器

[复制链接]
Angel_YY 发布时间:2019-1-21 07:42
定时器在单片机开发中是会被经常用到的,接下来我们一起在STM8中了解一下如何使用定时器。我们的目标是实现开发板出厂Demo程序功能,通过按键来控制LED闪烁的速度。
0001.png
通过查看STM8S的用户手册可以,STM8S内部有三类6个定时器,其中定时器4比较适合作为时基来使用,这里我们使用定时器4实现一个1ms的定时。
0002.png
根据STM8S的时钟树可以,定时器的时钟来源于单片机的主时钟,当单片机主频为16MHz是,定时器的时钟源也是16MHz。
0003.png
定时器4是一个8位自动装载自增定时器,提供可编程的预分频,定时器溢出可以产生中断。
0004.png
定时器4有3bit可编程预分频,可以实现1,2,4,8,16,32,64,128八种预分频值。
0005.png
首先在main函数中配置系统时钟,这里采用内部高速时钟,经过一分频,也就是16MHz主频。
0006.png
在main函数中配置定时器4,采用128分频,对于16MHz来说16 MHz / 128 = 125 000 Hz。
根据定时器计算公式TIM4_PERIOD = (0.001 * 125000 - 1) = 124 ,所以最终定时器重装载值TIM4_PERIOD为124。
接下来使能定时器4中断即可。经过以上配置,定时器就可以产生时间间隔为1ms的溢出中断了。
0007.png
在stm8s_it.c中修改定时器4的中断函数,调用TimingDelay_Decrement函数后清中断。
0008.png
在按键中断中调用SetDelayTime函数。
0009.png
在main.c中定义变量和函数原型。
0010.png
实现在终端中调用的几个函数,定时器中断产生时调用TimingDelay_Decrement函数,实现TimingDelay变量的递减。
Delay函数实现对递减变量TimingDelay进行赋值。
SetDelayTime函数则相应按键中断,改变延时的数值。
0011.png
最后在主函数中的主循环调用延时和LED翻转函数,实现LED灯的闪烁。
0012.gif
编译下载后,就可以实现开发板出厂程序的功能,通过按键改变定时器计时长短,达到改变LED闪烁速度改变的效果了。


总结,STM8的定时器有8位和16位两种,8位定时器配合预分频器,可以满足大部分情况下的计时功能了。定时器的使用也不复杂,只要掌握了时钟源和预分频器以及重装载值计算公式,就可以使用定时器的定时功能了。
工程代码:
STM8S_StdPeriph_Lib.zip (10.67 MB, 下载次数: 1)
收藏 1 评论2 发布时间:2019-1-21 07:42

举报

2个回答
Kevin201707 回答时间:2019-1-21 09:24:48
不错

点评

感谢支持  发表于 2019-1-22 13:10

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版