OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 367|回复: 0

第五课:定时器TIMER0~TIMER4

[复制链接]

13

主题

14

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2026-3-22
在线时间
17 小时
发表于 2026-8-10 15:27:42 | 显示全部楼层 |阅读模式
本帖最后由 leoringyang 于 2026-8-10 15:31 编辑

跟着课程走到今天,对YXRA-SDK应该很熟练了。这个开发工具几个明显的优势:1、开发快捷,单片机设备配置完全可视化;2、编译开发完全国产化,不受C影响;3、程序模块设计,很容易实现封装与移植。它的劣势也很明显,编译后的程序相较C语言明显大许多。比如今天定时器功能开发,如果用C语言开发编译Hex,只有小小的1k,而用YXRA-SDK编译则有20K之大。其实原因很简单,C语言开发的只有这几个定时器,YXRA开发语言面向对象,需要整个对象结构等。虽然这是它的劣势,但就代码保密来说,用YXRA-SDK开发的更安全,反编译人员几乎无法看出来开发者的意途。
言归正转,我们今天用YXRA-SDK开发定时器。同样用LED来显示定时器的效果。
还是和以前一样,在项目的设备视图中添加定时器0、定时器1、定时器2、定时器3、定时器4。为了能让LED的闪烁能明显看到,我们需要定时触发间隔达到300ms以上,仅用16位自动装载是做不到这一点的,STC32G12K128的主频是24MHz。我们需要通过12倍频和8位预分频调整。调整方法:先通过官方下载工具ISP中的定时器计算器计算出500ms的加载初始值,如果显示“当前的设定无法产生指定的时间 !”那就下降到100ms,再用到8位预分频调整。
本例中定时器用于LED闪烁,无需严格定时。后面用定时器作串口通讯、脉冲调制PWM,需要严格定时。
双击定时器图标,进入定时器的yxra程序中,在中断程序handleInterrupt()方法中添加使LED闪烁的程序即可。官方实验箱对应的LED是端口P6,所以示例中用下面代码:P6=P6 ^ 0x01;
P6=P6 ^ 0x02;
P6=P6 ^ 0x04;
P6=P6 ^ 0x08;
P6=P6 ^ 0x10;
来实现五个定时器分别闪烁五个不同的LED。由于五个定时器的间隔不一样,会看到五个LED闪烁频率不一样。附件为项目,可在YXRA-SDK中直接导入。由于所有的示例都是在同一个项目中完成,所以已经导入的需要先移除。



stcproject.zip

37.91 KB, 下载次数: 0

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

如发现本坛存在违规或侵权内容, 请点击这里发送邮件举报 (或致电020-38271790)。请提供侵权说明和联系方式。我们将及时审核依法处理,感谢配合。

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2026-8-22 21:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表