原创 MCU代码通用设置

2016-1-10 16:34 1670 11 11 分类: MCU/ 嵌入式

入行已经三年多了,已经在Cypress开发过一套比较完整的电机控制代码了,结果昨天除了些奇怪的问题,花了点时间找到原因,结果是一些比较低级的错误,先记录下来:

1. 在main()函数开始的时候记得加入上电延时

       芯片是使用的STM32F103,当时第一次使用M3核的单片机,因此看了很多例程,在例程上删减后,不断的增加新的功能,到如今的规模。产品已经开始准备小批量量产了,但是在量产的前一天下班前,突然发现一个很异常的现象。单片机AD到的初始电压值严重偏离正常值,灵光一闪,想起来上电后没有加延时就进行了配置和电压采样,这样不出问题才怪呢。这样的常识估计大家都知道。可是每当大家使用新的芯片时一般都是从例程上开始的,尤其容易忘了这一点。

      上电延时为200ms左右,如果需要采集初始电压,最好设置到1s以上。这样误差比较小一下。

 

2. 一些自己计算的数值最好放到预处理#define中去

     在注释中可以写上当时计算的公式。当然最好的办法是让编译器自己去计算出值。好处很多:1.如果过比较长的一段时间后需要修改,只要看一下公式,就很容易改动了。不需要苦思冥想当时是如何想的;2.改动方便,并且如果公式中别的因素变了的话,这个计算值也会跟着改变,不怕遗漏 ;3. 减少自己计算过程中的错误

3. #define预处理中的计算

    大家都知道,在单片机中最好先算乘法然后再算除法。对于编译器的预处理也是如此。这样可以显著的减少误差。另外如果要做两次除法,比如X*Y/Z/A,那么最好改成X*Y/(Z*A)。后者基本上接近真实值,前者因为有两次除法,因此有比较大的误差。

 

mcu

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /2 下一条