<hr />
讯享网
今天在设计一个200ms循环标志位时,发现循环时间很快,dbug一下有80ms,远小于200ms,发现代码逻辑是无问题的,那么究竟是什么问题呢?
讯享网
二、分析
逻辑上没有问题,只需要等TimerBase100ms 是2的倍数,标志位就会有变化1,但是实际上标志位变化的快的多,那么是什么问题呢?
自我解析的原因:
本人程序的时基是用的滴答计时器的中断,周期为100us,也就是每过100us就会触发中断,执行一个500us标志计时,100ms标志计时。(当然也有一些必要功能的标志位设置,这里就不贴出来,只贴计时标志位)。注意:声明定义这里没有张贴,中断中记得使用volatile关键词
我想如果在进行模运算(%),这时CPU需要执行额外的计算,这会增加CPU的负担,从而影响系统的实时性和准确性。此外,模运算本身也需要一定的计算时间,大家也知道汇编语言中,至少需要三句语句,才能完成赋值存储等功能,而如果在计算的过程中进入中断,就会打断其过程,从而导致计算失败,值不变。
因此将本文第一个代码块现在改为:
讯享网
那么时基运算完美

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/167337.html