嵌入式的编程技巧和注意事项有哪些?

更新时间: 2019-12-12 15:33:24来源: 粤嵌教育浏览量:8654

   嵌入式是一门高薪和高前途的行业,很多的人在自己是零基础情况之下还是想要学习嵌入式技术的,但是如果说你是零基础的话不参加嵌入式培训班来进行系统性的学习的话,那么是很难自学的话嵌入式技术的。那么嵌入式的编程技巧和注意事项有哪些呢?下面粤嵌科技的嵌入式培训讲师就给大家讲解下。

  嵌入式编程技巧有哪些呢?


  常见的socket3种类型:


  (1)流式socket (SOCK_STREAM)流式套接字提供可靠的、面向连接的通信流;它使用TCP协议,从而保证了数据传输的正确性和顺序性。


  (2)数据报socket(SOCK_DGRAM)数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP


  (3) 原始socket,原始套接字允许对底层协议如IPICMP进行直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。


  嵌入式编程的注意事项有哪些呢?


  1、延时


  嵌入式编程经常会涉及到硬件的操作,如ADC,打开或者关闭一个电流源,这些都是需要时间的,因此当我们在发出这些指令的时候立即读取寄存器的值是得不到想要的结果的,而且你还找不出原因,有时候需要的延时还比较长,达到ms级,一般情况下us级就够了,根据各芯片的时钟频率而定,不单指MCU的总线时钟频率。


  2、编程的变量


  一般来说如果你非常明确某个变量的作用域和生命周期就应该定义相对的变量,如conststatic等,这样不容易出错,不建议将所有变量都定义成全局变量,这样管理起来比较麻烦,程序一旦出错,破坏性也比较大,函数也是如此,全局变量和通用函数一定要申明,这样在调用的时候不容易出错,而且有些编译器对于未申明的函数是不会报错的,但在调用的时候又会发出类型隐含转换的警告,在这里就不举例子了,总之这点要特别小心。


  3、宏定义


  在程序编写过程对于一些特定的数字应该尽量使用宏定义,这样做有个好处就是比较直观,便于日后维护,要不然时间久了你看到那个数字根本就想不起它代表什么意思,宏定义并不会给程序带来任何负担,因为它在编译的时候就已经全部替代了,所以尽可以广而用之。值得一提的是宏定义并不局限于使用常量,它可以定义函数,因为它是直接替换,因此避免了入栈和出栈,提高了程序执行的效率,当时同时增加了代码量,因此一般用比较简单的函数,它还有一个缺点是在替换的过程不检查参数类型是否正常,从而增加了安全隐患,解决此问题的方法是使用一个称之为inline的内联函数,它继承了宏定义的优点,又弥补了它的缺点,是个的选择,但是这个属于C++的范畴,有一定的难度,在这里也不多讲,有兴趣的朋友可以参考一下相关资料。


  4、浮点运算


  大多数低档次的单片机都是不支持浮点运算的,因此在实际使用过程中也很少用到,因此为了降低成本,一般都去掉了浮点运算模块,这就带来了一个问题,如果万一要用到浮点运算怎么办?细心的朋友可能会发现,即使不具有浮点运算的单片机在仿真调试过程依然可以使用floatordouble的数据类型进行计算,而且结果也很准确,这是为什么呢?这个因为编译器自动调用了库函数来实现的,一般是通过迭代的方法,因此它的执行效率非常慢,不建议采用此方法,而通常采用的是“定点”的方法来解决这个问题,比如说一个32bit的数据,你可以假定它的低8位是小数位,然后移位计算,类似于整数运算,这种方法比较复杂,但是可以非常精确,还有一种方法就是直接放大10N次方倍进行整数的计算,可以得出近似值,因此为了不增加不必要的麻烦,应该总是尽量避免使用浮点运算,一般情况也都是可以避免的。


  5watchdog


  个人接触到的的watchdog机制是三重watchdogwatchdog1检查时钟频率,watchdog2监视一小段代码,它必须在一个比较短的时间里喂一次,一般要求在250us650us之间喂一次,watchdog3监视一大段代码,要求在比较长的时间内喂一次,一般是100ms以内,三个条件必须同时满足才行,这要求对代码的执行过程非常清楚,或者将导致喂狗出错重起!


  在学习嵌入式技术的时候一定要特别注意下粤嵌科技的嵌入式讲解在上面给大家讲解的编程技巧和注意事项,这样在学习过程中才会少走很多的弯路。如果说你想要学习嵌入式技术的话,那么粤嵌科技的小编欢迎大家来我们的公司的嵌入式培训班进行实地考察,也可以点击我们文章下面的获取试听资格按钮来获取我们的嵌入式培训免费课程试听资格,来和我们的讲师进行面对面的交流和互动,并更加深入的了解我们粤嵌科技。

免费预约试听课