航顺HK32MCU(第22课)I 软件循环延时不稳定解决方案-HK32F030M 应用笔记(二十二)

[复制链接]
683|7
手机看帖
扫描二维码
随时随地手机跟帖
航顺HK32MCU|  楼主 | 2023-3-8 10:08 | 显示全部楼层 |阅读模式

HK32F030M是航顺一款入门级经济型32位MCU,使用ARM® Cortex®-M0内核,最高工作频率32 MHz,内置16 KByte Flash、448 Byte EEPROM和2 KByte SRAM。由于其超高的性价比,在工业、医疗、消费电子等行业得到广泛应用。


图片5.png


HK32F030M使用过程中如果设计有软件循环设计延时,有可能会出现延时不准确的现象。


原因是由于芯片设计时,在存储设备和MCU之间设计了4个word的高速buffer,存储慢的数据先把数据存放到buffer。通过buffer可以减少进程间通信需要等待的时间,在此期间MCU可以干其他的事情,但是当循环指令小于4个word(最大8条指令)时,有可能代码存放于高速buffer,造成循环代码的取指时间不固定。对于这种情况,请参考以下解决方案:



建议在DelayMs函数中,增加循环体中指令数量,让代码的取指不会命中高速buffer。


由于Nop的指令只有16bit,buffer是32位取指,所以为了一致性,建议加偶数个 nop。


修改前

图片4.png

修改后

图片3.png

使用特权

评论回复

相关帖子

wanduzi| | 2023-3-14 22:13 | 显示全部楼层
有BSP库函数下载吗?

使用特权

评论回复
tpgf| | 2023-4-3 13:55 | 显示全部楼层
我所不明白的就是为什么这样操作就不会命中高速的buffer呢

使用特权

评论回复
aoyi| | 2023-4-3 15:41 | 显示全部楼层
这种循环体中的指令不会被其他指令所打断吗

使用特权

评论回复
nawu| | 2023-4-3 15:54 | 显示全部楼层
没有看明白 为什么这样做就不会命中buffer呢

使用特权

评论回复
zljiu| | 2023-4-3 16:38 | 显示全部楼层
nop指令的本质是什么呢,可以使用其他指令替代吗

使用特权

评论回复
gwsan| | 2023-4-3 16:59 | 显示全部楼层
我没有能理解这种延时不准的本质原因是什么

使用特权

评论回复
tfqi| | 2023-4-3 17:19 | 显示全部楼层
请问这个高速buffer的长度是固定的吗

使用特权

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

本版积分规则

27

主题

31

帖子

2

粉丝