单片机嵌入式编程需要注意哪一些

  rrupt和MM(memorymanage),之所以有人觉得并不困难,那是因为太多数情况下芯片商都已经直接写好,但是如果设计者本身就在为芯片制造商工作,那就必须自己会写配置文件。

  这两个东西之所以比较难是因为要用汇编或类C来写,属于比较低层的东西,中断有外部中断和内部中断,外部中断有两种实现模式,硬件中断模式和软件中断模式,相对来说比较简单,属于应用层面的,相比之下,内部中断就要复杂得多,内部中断主要是发生重起,总线出错、溢出、校验出错等情况产生的,很多软件开发人员基本上不写对应的中断服务程序,因为它太难了而且一般也用不到。但是一旦发生,那就是致命错误,因此从整个系统健壮性来考虑必须要有相应的ISR才行,这也是freescale的专家建议的,因所以下面就谈一下嵌入式编程应该注意的问题。

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

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

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

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

  以三重watch dog为例,watch dog1检查时钟频率,watch dog2监视一小段代码,它必须在一个比较短的时间里喂一次,一般要求在250us到650us之间喂一次,watch dog3监视一大段代码,要求在比较长的时间内喂一次,一般是100ms以内,三个条件必须同时满足才行,这要求对代码的执行过程非常清楚,或者将导致喂狗出错重起。

  这里需要向大家强调的是,在单片机嵌入式的编程过程中程序的好坏往往是由细节决定的,一个程序写的是否详细、灵活,是与日积月累的知识积累与实际磨练成正比的。虽然编程是意见非常枯燥甚至乏味的过程,但成功后的喜悦能够让大家相信这份付出是值得的。

  中国硬件创新大赛网络培训会—技术培训篇如果你就干这行,毫无疑问你不能错过这次直播;如果不是,可能你不一定喜欢单片机,也不

  随后为了更好地满足控制领域的嵌入式应用,单片机中不断扩展一些满足控制要求的电路单元,如定时计数器和多...

  虽然嵌入式系统得到了广泛的应用,但每个人对于嵌入式的理解,都会有不同的理解。

  嵌入式系统的可裁减性,必须在嵌入式系统设计中引入子系统和块的概念,只有在顶层设计时明确了子系统和模块...

  嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,...

  在嵌入式系统中,推理可以在各种片上处理单元上运行,如中央处理单元(CPU),GPU,数字信号处理器,...

  随着经济程度的进步和消费结构的转变,人们对消费电子产物的要求越来越高,如产物的机动性、可控性、耐用性...

  目前我们的生活中到处都是嵌入式产品,什么手机,智能家居等,这些都是应用了嵌入式,嵌入式领域很广,当然...

  同样有助于闪存不断增加的容量是主流比特容量现在是每单元三比特,或三层单元(TLC)技术,具有四电平单...

  随着物联网的出现,由于连接设备的快速发展,嵌入式系统市场出现了大规模增长。

  地平线年,主要从事边缘人工智能芯片和计算平台业务,场景聚焦于智能驾驶和AIoT边缘计算...

  福州瑞芯微电子又为全球AI开发者带来一波福利,瑞芯微宣布旗下AI平台重大升级,正式面向全球AI开发者...

  随着单片机技术的不断发展,以单片机C语言为主流的高级语言也不断被更多的单片机爱好者和工程师所喜爱。使...

  8259A是一种中断控制芯片,在单片机系统中一般用来扩展单片机的中断,pc机中也有这个芯片,

  单片机系统里常用的8255芯片是一个典型的可编程通用并行接口芯片,用来扩展单片机的端口,它具有3个8...

  8253是在单片机系统常用的定时/计数器接口芯片,他能扩展几个定时/计数器,而不占用单片机的cpu时...

  max232是一种把电脑的串行口rs232信号电平(-10 ,+10v)转换为单片机所用到的TTL信...

  当你有了学习单片机的愿望,接下来的问题就是从何学起,如何学? 对于在校学生有老师指导,开始时的迷茫会...

  如果你想学单片机,请在学习单片机之前,请做好如下准备工作: 一、硬件准备: 本人推荐给大家的学习...

  通用汽车的研究显示,许多顾客都更喜欢汽车中嵌入技术,并且越来越希望能够将手中的技术与车上的技术无缝整...

  随着计算机技术、半导体技术以及电子应用技术的发展,嵌入式系统以其体积小、可靠性高、功耗低、软硬件集成...

  目前使用单片机微控制器作为核心的电子产品数不胜数,只要是能够给大家带来便利,或者乐趣,或者解决问题的...

  我认为单片机产品在现在和可预见的未来其市场潜力还是很巨大的,就以目前的情况看基本上所见到的家电产品都...

  在没有嵌入式 AI 之前,手机也需要图像算法,大多是在相机部分针对图像质量做增强,如美颜、美景、HD...

  人工智能的发展为人们生活带来便捷与改变,然而以云为中心的构架方式并非在任何情况下都是最理想的解决方案...

  全球系统级芯片(SoC)技术的领导厂商意法半导体发布业内首款整合双ARM Cortex-A9 内核和...

  一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条...

  西门子在MindSphere中嵌入SAS数据流分析,利用人工智能(AI)和机器学习满足不断增长的物联...

  近几年,存储芯片价格的持续上涨推动了半导体市场的增长,这也让三星电子取代英特尔成为半导体市场的霸主。

  人工智能算法如何有效地运行在嵌入式智能终端(即边缘计算)是近年研究的热点,本文从嵌入式人工智能技术研...

  Xnor推出了AI2Go平台,该平台可让开发人员和制造商制作针对设备内人工智能优化的预建AI模型。A...

  随着AI与IoT技术的发展,嵌入式系统设计朝着智能、安全、节能等方向发展。对于半导体上游厂商而言,嵌...

  “USBType-C”并不是电子产品的新术语,它已经上市超过四年,你可能每天都在使用它。

  伴随物联网和人工智能的快速发展,以及5G基础设施的不断推进与提升,嵌入式操作系统在智能系统中发挥越来...

  嵌入式技术就是专用计算机技术,这个专用,是指针对某个特定的应用,如针对网络、针对通信、针对音频、...

  AMD的EPYC和Ryzen处理器嵌入式版本日前出台,从而将Zen架构带入了新的领域,也丰富了AMD...

  AMD处理器在I/O和内存方面有着独特的优势,在核心的密度方面也是如此,同时也体现在RAS属性上。

  看着技术的快速发展,你是不是也幻想过未来生活的场景图?云计算、大数据、物联网和人工智能深度融合,落地...

  嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有μcos,vxworks,linux,a...

  一直以来三星虽然有自己开发移动SoC的能力,而且为高通等公司提供了晶圆工艺,但他们并没有自己的嵌入式...

  嵌入式技术起源于单片机技术, 是各类数字化的电子、机电产品的核心,主要用于实现对硬件设备的控制、监视...

  DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器具,其主机应用是实时快...

  虽然挖矿已经萎靡,但很多应用领域都需要极其强大的GPU计算能力,多卡并行最佳。台北电脑展上,蓝宝石就...

  首先,嵌入式是物联网技术体系中的重要组成部分,经过多年的发展,嵌入式开发已经形成了一个比较庞大的生态...

  脚本语言不是什么新奇的东西,自打有了编译型的语言自然就有了解释型的语言。限于计算机硬件,解释型的语言...

  嵌入式开发范围较广,根据系统处理器的处理能力以及资源分配情况,又有许多不同处理器。常说的有MCU、M...

  每个单片机系统里都有晶振,全程是叫晶体震荡器,在单片机系统里晶振的作用非常大,他结合单片机内部的电路...

  这一阵刚休息闲着无聊制作8X8X8光立方,应为是初学者有什么问题请见谅啊!~~~ 一、光立方的基本...

  行业内有关嵌入式人工智能的声音越来越多,很大程度上是因为云计算已经无法满足低耗、高效的计算力需求。

  我国首台L4级自动驾驶公交车已经安装嵌入式视觉,高度自动驾驶不需要司机,不需要方向盘并且连油门和刹车...

  在台湾嵌入式论坛上,AMD(纳斯达克:AMD))宣布进一步壮大其锐龙嵌入式产品家族,推出新款AMD锐...

  AMD正式发布了锐龙R1000系列嵌入式处理器,和此前推出的锐龙V1000系列一样,都是基于Zen ...

  单片机的ADC接口属于模数转换接口,将外部的模拟量信号转化为数字信号,单片机属于数字器件,需将模拟信...

您可能还会对下面的文章感兴趣: