您的位置 首页 发布

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

在单片机编程的过程中,如果一名设计者能够同时掌握多门编程语言,那么这名设计者肯定是一位非常优秀的人才。但是想要同时精通汇编、C语言、C++这三门

单片机编程的进程中,假如一名设计者可以一起把握多门编程言语,那么这名设计者肯定是一位十分优异的人才。可是想要一起通晓汇编、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以内,三个条件有必要一起满意才行,这要求对代码的履行进程十分清楚,或许将导致喂狗犯错重起。

这儿需求向我们着重的是,在单片机嵌入式的编程进程中程序的好坏往往是由细节决定的,一个程序写的是否具体、灵敏,是与铢积寸累的常识堆集与实践锻炼成正比的。尽管编程是定见十分单调乃至庸俗的进程,但成功后的高兴可以让我们信任这份支付是值得的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/145072.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部