大连理工大学软件学院_第1页
大连理工大学软件学院_第2页
大连理工大学软件学院_第3页
大连理工大学软件学院_第4页
大连理工大学软件学院_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大连理工大学软件学院邱铁办公楼409Tel:87571521E_mail:qiutie参考教材:ARM嵌入式系统结构与编程清华大学出版社2009年3月出版,ARM嵌入式系统结构与编程,第8章ARM汇编语言与嵌入式C混合编程,本章首先简要的介绍了嵌入式C语言的编程规范,嵌入式开发中常用的位运算与控制位域及在嵌入式C程序设计中要注意的问题,为读者进行嵌入式C程序设计打基础。然后介绍在ARM汇编语言与嵌入式C语言进行相互调用的标准(AAPCS),并以大量的实例说明了相互调用应注意的问题。,内容提要,81嵌入式C编程规范82嵌入式C程序设计中的位运算83嵌入式C程序设计中的几点说明84嵌入式C程序设计格式85过程调用标准ATPCS与AAPCS86ARM汇编语言与嵌入式C混合编程,8.1嵌入式C编程规范,在当前的嵌入式开发中,嵌入式C语言是最为常见的程序设计语言,对于程序员来说,能够完成相应功能的代码并不一定是优秀的代码。优秀的代码还要具备易读性、易维护性、具有可移植和高可靠性。,8.1.1嵌入式C程序书写规范,排版规则如下:(1)程序块要采用缩进风格编写(2)较长的语句(例如超过80个字符)要分成多行书写(3)循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分(4)若函数或过程中参数较长,也要进行适当的划分。(5)一般不要把多个短语句写在一行中(6)程序块的分界符语句的大括号“”与“”一般独占一行并且在同一列,书写规范示例:,8.1.2命名规则,(1)标识符的名称要简明,能够表达出确切的含义,可以使用完整的单词或通常可以理解的缩写。(2)如果在命名中使用特殊约定或缩写,则要进行注释说明。(3)对于变量命名,一般不取单个字符,例如i、j、k.(4)函数名一般以大写字母开头;所有常量名字母统一用大写。,8.1.3注释说明,注释有助于程序员理解程序的整体结构,也便于以后程序代码的维护与升级。常用的规则如下:(1)注释语言必须准确、简洁且容易理解;(2)程序代码源文件头部应进行注释说明;(3)函数头部应进行注释;(4)程序中所用到的特定含义的常量、变量,在声明时都要加以注释;,(5)对于宏定义、数据结构声明,如果其命名不是充分自注释的,也要加以注释。(6)如果注释单独占用一行,与其被注释的内容进行相同的缩进方式,一般将注释与其上面的代码用空行隔开(7)程序代码修改时,其注释也要及时修改,一定要保证代码与注释保持一致。,命名规则示例:,8.2嵌入式C程序设计中的位运算,在嵌入式程序设计中,位操作是最常用的运算之一,因为在很多情况下要对寄存器中的某位或某个管脚进行操作,这些都需要用位操作来完成。,8.2.1按位与操作,按位与运算符“printf(numbertexp2texp3texp4n);printf(-t-t-t-n);for(n=1;n=MAX_POWER;n+)printf(%2dt%3dt%4dt%5dn,n,SQR(n),CUBE(n),QUAD(n);,程序运行结果,条件编译(1).形式1:,#ifdef标识符程序段1#else程序段2#endif,(2).形式2#ifndef标识符程序段1#else程序段2#endif,(3).形式3#ifdef表达式1程序段1#elif表达式2程序段2#else程序段3#endif,8.4嵌入式C程序设计格式,8.4.1可重入函数8.4.2中断处理程序8.4.3模块化程序设计,8.4.1可重入函数,如果某个函数可以被多个任务并发使用,而不会造成数据错误,我们就说这个函数具有可重入性(reentrant)。,可重入函数可以使用局部变量,也可以使用全局变量。如果使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护,示例解析:,分析下面的函数是否具有可重入性staticinttmp;voidswap(int*a,int*b)tmp=*a;*a=*b;*b=tmp;,voidswap(int*a,int*b)inttmp;tmp=*a;*a=*b;*b=tmp;,在操作系统中,通过信号量机制使得函数具有可重入性:staticinttmp;voidswap(int*a,int*b)申请信号量操作tmp=*a;*a=*b;*b=tmp;释放信号量操作,8.4.2中断处理程序,在编写中断服务程序时需要满足如下要求:(1)不能向中断服务程序传递参数;(2)中断服务程序没有返回值;(3)中断服务程序应要尽可能短,来减少中断服务程序的处理时间,保证实时系统的性能。,8.4.3模块化程序设计,嵌入式C程序设计主要采用模块化设计方法,将系统内的任务进行合理的划分,将具有同一属性或相同类别的代码归为一类组成模块,每个模块的功能相对独立。将整个软件系统分为多个模块,编程思路就会很清晰。,嵌入式系统软件模块划分,示例

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论