中级会员
 
- 积分
- 270
- 金钱
- 270
- 注册时间
- 2026-3-22
- 在线时间
- 17 小时
|
第二课中在主程序中通过延时+循环实现跑马灯效果,这种方案优点是简单明了。
一般来说,对于定期执行的任务一般放在定时器中,可由定时器中断来执行。本节课向大家演示YXRA-SDK是如何实现定时器中断实现跑马灯效果的。
注意:只要是在中断中执行的程序,一定要简短。如果中断程序执行时间过长,可能导致的后果是:1、中断可能"连续触发",导致ISR被反复执行,主循环根本得不到运行时间;2、象定时器计数这样的中断会出现误差,功能执行频率不对;3、主程序分不到运行时间,主程序卡住。如果中断程序无法在短时间内完成,可记录当前状态,由主程序来执行。
下面开始一步一步的实现这个功能。
首先在设备视图中添加控制LED的关联的端口Px,官方实验箱是P4.0+P6.0。我们将P4和P6放到设备视图中,设置成准双向口模式,并赋上初值0xE7,让中间的两颗LED能亮。
接着在设备视图中添加定时器0(其他定时器也可以),设置定时器自动装载初值,以及分频,记住一定要启用中断。一般将间隔时长控制在100ms左右。定时器实现跑马灯这个功能中,各位开发者不要纠结如何严格计算出时间。如果用到定时器并严格要求时,系统会计算并匹配(但不会自动更改定时器的属性),通过配置校验功能可以看到。
接下来就是在定时器中断中添加LED循环的程序,双击设备视图中的定时器0,打开程序,在handleInterrupt()方法中添加。
功能已经开发完成,是不是非常快捷。YXRA-SDK不仅快捷,更会在系统层面上添加检测机制,尽量为开发者减少配置冲突。
stcproject.zip为以上功能的项目,可在YXRA-SDK中直接导入即可。如果想深入了解定时器,在设备视图的定时器0上右键菜单中点击开发文档,也可以在帮助菜单中打开完整的帮助文档,定位到定时器章节。



|
|