单片机嵌入式编程注意事项

时间:2023-03-08来源:佚名
在单片机编程的过程中,如果一名设计者能够同时掌握多门编程语言,那么这名设计者肯定是一位非常优秀的人才。但是想要同时精通汇编、C语言、C 这三门语言实在是太难了,很多初学者在其中一门的学习中就已经到处碰壁,苦不堪言。本文特意为大家整理了拥有嵌入式编程领域多年工作经验的工程师意见,汇总成了一篇能够对嵌入式编程经验有着指导意义的注意事项,感兴趣的朋友快来看一看吧。
在单片机嵌入式编程中,最难的两部分是interrupt和MM(memorymanage),之所以有人觉得并不困难,那是因为太多数情况下芯片制造商都已经直接写好,但是如果设计者本身就在为芯片制造商工作,那就必须自己会写配置文件。
这两个东西之所以比较难是因为要用汇编或类C来写,属于比较低层的东西,中断有外部中断和内部中断,外部中断有两种实现模式,硬件中断模式和软件中断模式,相对来说比较简单,属于应用层面的,相比之下,内部中断就要复杂得多,内部中断主要是发生重起,总线出错、溢出、校验出错等情况产生的,很多软件开发人员基本上不写对应的中断服务程序,因为它太难了而且一般也用不到。但是一旦发生,那就是致命错误,因此从整个系统健壮性来考虑必须要有相应的ISR才行,这也是freescale的专家建议的,因所以下面就谈一下嵌入式编程应该注意的问题。
延时
嵌入式编程经常会涉及到硬件的操作,如ADC,打开或者关闭一个电流源,这些都是需要时间的,因此当在发出这些指令的时候立即读取寄存器的值是得不到想要的结果的,而且还找不出原因,有时候需要的延时还比较长,达到ms级,一般情况下us级就够了,根据各芯片的时钟频率而定,不单指MCU的总线时钟频率。
变量
一般来说如果非常明确某个变量的作用域和生命周期就应该定义相对的变量,如const、static等,这样不容易出错,不建议将所有变量都定义成全局变量,这样管理起来比较麻烦,程序一旦出错,破坏性也比较大,函数也是如此,全局变量和通用函数一定要申明,这样在调用的时候不容易出错,而且有些编译器对于未申明的函数是不会报错的,但在调用的时候又会发出类型隐含转换的警告,在这里就不举例子了,总之这点要特别小心。
宏定义
在程序编写过程对于一些特定的数字应该尽量使用宏定义,这样做有个好处就是比较直观,便于日后维护,要不然时间久了看到那个数字根本就想不起它代表什么意思,宏定义并不会给程序带来任何负担,因为它在编译的时候就已经全部替代了,所以尽可以广而用之。值得一提的是宏定义并不局限于使用常量,它可以定义函数,因为它是直接替换,因此避免了入栈和出栈,提高了程序执行的效率,当时同时增加了代码量,因此一般用比较简单的函数,它还有一个缺点是在替换的过程不检查参数类型是否正常,从而增加了安全隐患,解决此问题的方法是使用一个称之为inline的内联函数,它继承了宏定义的优点,又弥补了它的缺点,是个最佳的选择,但是这个属于C 的范畴,有一定的难度,在这里也不多讲,有兴趣的朋友可以参考一下相关资料。
浮点运算
大多数低档次的单片机都是不支持浮点运算的,因此在实际使用过程中也很少用到,因此为了降低成本,一般都去掉了浮点运算模块,这就带来了一个问题,如果万一要用到浮点运算怎么办?细心的朋友可能会发现,即使不具有浮点运算的单片机在仿真调试过程依然可以使用floatordouble的数据类型进行计算,而且结果也很准确,这是为什么呢?这个因为编译器自动调用了库函数来实现的,一般是通过迭代的方法,因此它的执行效率非常慢,不建议采用此方法,而通常采用的是“定点”的方法来解决这个问题,比如说一个32bit的数据,可以假定它的低8位是小数位,然后移位计算,类似于整数运算,这种方法比较复杂,但是可以非常精确,还有一种方法就是直接放大10的N次方倍进行整数的计算,可以得出近似值,因此为了不增加不必要的麻烦,应该总是尽量避免使用浮点运算,一般情况也都是可以避免的。
watch dog
以三重watch dog为例,watch dog1检查时钟频率,watch dog2监视一小段代码,它必须在一个比较短的时间里喂一次,一般要求在250us到650us之间喂一次,watch dog3监视一大段代码,要求在比较长的时间内喂一次,一般是100ms以内,三个条件必须同时满足才行,这要求对代码的执行过程非常清楚,或者将导致喂狗出错重起。
这里需要向大家强调的是,在单片机嵌入式的编程过程中程序的好坏往往是由细节决定的,一个程序写的是否详细、灵活,是与日积月累的知识积累与实际磨练成正比的。虽然编程是意见非常枯燥甚至乏味的过程,但成功后的喜悦能够让大家相信这份付出是值得的。

相关阅读

为什么总是在电路里摆两个0.1uF和0.01uF的电容?

一、旁路和去耦 旁路电容(Bypass Capacitor)和去耦电容(Decoupling Capacitor)这两个概念在电路中是常见的,但是真正理解起来并不容易。 要理解这两个词汇,还得回到英文语境中去。 Bypass在英...
2023-03-31
为什么总是在电路里摆两个0.1uF和0.01uF的电容?

一度电多少钱,2018全国各地一度电收费标准

我们的生活离不开电,不管是日常的照明、供暖还是出行,都离不开电。一度电多少钱并不统一,不同的地区一度电价格其实不同。那2018各地一度电收费标准是多少? 一度电多少钱...
2023-06-11
一度电多少钱,2018全国各地一度电收费标准

自动洗车机的程序控制

大家好!每天学一点,学习更轻松。关注我,感谢大家为我点赞。 假设顾客投入适当的硬币后,X1=On,将保存T1时间值的D10中数值清零。顾客握住喷水器开关柄,XO=On,PLS指令执行,M1...
2023-04-30

零基础学习基本照明电路及家用电路安装,简单易懂

照明电路是我们日常生活和学习中接触最多的电线电路。今天我们来讲一讲基本照明电路及家用电路安装,首先我们先来了解一下照明电路的基本概念和组成的相关知识。 一、照明电路...
2023-06-11

软启动器6条选型闭坑指南

坑1:只盯电机额定功率,忽略核心的额定电流 很多人买软启动器,直接按电机功率匹配——37kW电机就买37kW软启动,结果到现场一用就过载跳闸。 踩坑原因:软启动器的核心承...
2026-06-08

热销商品

四氟包覆/FEP/PTFE包覆胶O型圈全氟醛FFKMO型圈耐化学腐蚀氟胶

四氟包覆(FEP/PTFE)O型圈及全氟醚(FFKM)O型圈是高性能密封解决方案,专为极端化学环境设计。FEP或PTFE包覆氟橡胶(FKM)芯材的O型圈兼具外层优异的耐化学腐蚀性、抗溶胀性...
5

100%桑蚕丝香云纱饰品发圈发夹口罩眼罩发带腰封直播专拍单拍无效

100%桑蚕丝香云纱饰品系列,精选天然桑蚕丝与非遗香云纱工艺匠心打造,质感柔滑亲肤,光泽雅致,尽显东方韵味。包含发圈、发夹、口罩、眼罩、发带、腰封等多款实用配饰,适...
0.85

日本田岛美工刀工业用重型全钢加厚壁纸刀切割工具刀进口美工刀架

日本田岛美工刀是一款专为工业用途设计的高品质切割工具,采用重型全钢加厚结构,具备卓越的耐用性与稳定性。其刀架由进口优质钢材精工打造,防锈耐磨,可长时间保持锋利...
15.3

氟胶星型密封圈X型圈线径1.78/2.62/3.53/5.33氟橡胶星形圈X-ring

氟胶星型密封圈(X型圈)采用高性能氟橡胶(FKM)材料制成,具有优异的耐高温、耐油、耐化学腐蚀及耐老化性能,广泛应用于汽车、航空航天、液压系统及高端机械设备中。其独特...
2

大量现货 NBR耐油 密封圈 O型圈 橡胶密封圈

大量现货供应NBR耐油密封圈、O型圈及橡胶密封圈,采用优质丁腈橡胶(NBR)材质,具有优异的耐油性、耐磨性和抗压缩永久变形性能,适用于-30℃至+120℃的工作环境。产品广泛...
1

网站栏目