我爱编程

2018-07-05 C语言的注意项 中断函数一定要短 MCU速

2018-07-05  本文已影响0人  无敌啊左手

C语言编程要注意:

  1. 若函数的返回值是一个变量,那么一定要确定这个变量被赋了正确的值
  2. 当使用无符号减法的时候,要确定减法的后值比前值小,防止出现负数的情况

为什么中断函数要尽可能的短?

为的是不影响其他中断的到来,也不影响当前中断的再次进入。比如STM32的PVD函数就要短,因为有时候电压不稳,掉电很快就又上电了,这时候又会触发一次PVD中断。如果前一个PVD中断很长的话,这一个PVD中断就会检测不到。

想解决方法的时候,不能想到一条就开始实施,应该多想出几种方法,做对比,在工作量与未来的效率之间做权衡。若只是闷头按照想到的第一个方法去做,那么很可能最后发现这并不是一个好方法,反而浪费了更多的时间。

对待MCU的工作能力跟不上,我们其实可以有多种方法去优化:

  1. 简化算法,提高效率。这个是最直接的解决方法,但是也是最难办到的。
  2. 适当的舍去一些数据,使得工作量与MCU的频率相匹配。

比如现在的项目是使用MCU的中断去读取一个总线数据,并用这些数据做计算。但是上游产品的速度提高了,使得总线上出现数据的频率大大增高,造成原来程序MCU的中断速度跟不上了。当时想到的方法就是第1个方法,尝试将运算从中断函数中提取出来,放在后台程序中进行。进行到最后发现坑很多,流程全得改变。然后才想到用方法2,将程序改为“确保读出一帧完整的数据”,没有读出完整数据的数据帧就舍去。这样也能解决问题。

上一篇下一篇

猜你喜欢

热点阅读