中级会员
 
- 积分
- 270
- 金钱
- 270
- 注册时间
- 2026-3-22
- 在线时间
- 17 小时
|
本帖最后由 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中直接导入。由于所有的示例都是在同一个项目中完成,所以已经导入的需要先移除。


|
|