主要观点总结
工程师使用ARM Cortex-M0+的MCU时,在延时函数std_delayms中遇到计时偏差问题,发现与MicroLIB库有关。通过分析和测试,确定是MicroLib库中的除法运算导致的延时。对此,文章提供了解决方案和背后的原理分析。
关键观点总结
关键观点1: 问题现象
使用ARM Cortex-M0+的MCU时,std_delayms延时1s时,勾选KEIL中的Use MicroLIB会导致延时有5%的计时偏差。
关键观点2: 问题分析
分析std_delayms函数实现,发现延时函数通过systick定时器实现,而问题出在SystemCoreClock/1000000这个除法运算上,MicroLib库的执行导致除法运算执行更慢。
关键观点3: 实验验证
通过测试代码执行时间,发现勾选MicroLib后,执行时间为49us,不勾选为9us,验证了之前的分析。
关键观点4: 解决方案
为了减小定时误差,可以不使用除法运算,或者在主频变化的情况下更新一次除法运算即可。
关键观点5: MicroLib库的特点
MicroLib库可以减小代码空间占用,但有些函数执行时间会变长。ARM Cortex-M0+没有硬件除法器,除法是相对复杂的操作。
免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。
原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过
【版权申诉通道】联系我们处理。