大多数低档次的单片机都是不支持浮点运算的,因此在实际使用过程中也很少用到,因此为了降低成本,一般都去掉了浮点运算模块,这就带来了一个问题,如果万一要用到浮点运算怎么办?细心的朋友可能会发现,即使不具有浮点运算的单片机在仿真调试过程依然可以使用float or double的数据类型进行计算,而且结果也很准确,这是为什么呢?这个因为编译器自动调用了库函数来实现的,一般是通过迭代的方法,因此它的执行效率非常慢,不建议采用此方法,而通常采用的是“定点”的方法来解决这个问题,比如说一个32bit的数据,可以假定它的低8位是小数位,然后移位计算,类似于整数运算,这种方法比较复杂,但是可以非常精确,还有一种方法就是直接放大10的N次方倍进行整数的计算,可以得出近似值,因此为了不增加不必要的麻烦,应该总是尽量避免使用浮点运算,一般情况也都是可以避免的。
5.watch dog
以三重watch dog为例,watch dog1检查时钟频率,watch dog2监视一小段代码,它必须在一个比较短的时间里喂一次,一般要求在250us到650us之间喂一次,watch dog3监视一大段代码,要求在比较长的时间内喂一次,一般是100ms以内,三个条件必须同时满足才行,这要求对代码的执行过程非常清楚,或者将导致喂狗出错重起。
这里需要向大家强调的是,在单片机嵌入式的编程过程中程序的好坏往往是由细节决定的,一个程序写的是否详细、灵活,是与日积月累的知识积累与实际磨练成正比的。虽然编程是意见非常枯燥甚至乏味的过程,但成功后的喜悦能够让大家相信这份付出是值得的。