版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连理工大学软件学院 邱铁 办公楼409 Tel:87571521 E_mail: 参考教材:ARM嵌入式系统结构与编程 清华大学出版社2009年3月出版,ARM嵌入式系统结构与编程,第8章 ARM汇编语言与嵌入式C混合编程,本章首先简要的介绍了嵌入式C语言的编程规范,嵌入式开发中常用的位运算与控制位域及在嵌入式C程序设计中要注意的问题,为读者进行嵌入式C程序设计打基础。然后介绍在ARM汇编语言与嵌入式C语言进行相互调用的标准(AAPCS),并以大量的实例说明了相互调用应注意的问题,内容提要,81 嵌入式C编程规范 82 嵌入式C程序设计中的位运算 83 嵌入式C程序设计中的几点说明 84 嵌
2、入式C程序设计格式 85 过程调用标准ATPCS与AAPCS 86 ARM汇编语言与嵌入式C混合编程,8.1 嵌入式C编程规范,在当前的嵌入式开发中,嵌入式C语言是最为常见的程序设计语言,对于程序员来说,能够完成相应功能的代码并不一定是优秀的代码。 优秀的代码还要具备易读性、易维护性、具有可移植和高可靠性,8.1.1 嵌入式C程序书写规范,排版规则如下: (1)程序块要采用缩进风格编写 (2)较长的语句(例如超过80个字符)要分成多行书写 (3)循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分 (4)若函数或过程中参数较长,也要进行适当的划分。 (5)一般不要把多个短语句写在一行中
3、 (6)程序块的分界符语句的大括号“”与“”一般独占一行并且在同一列,书写规范示例,8.1.2 命名规则,1)标识符的名称要简明,能够表达出确切的含义,可以使用完整的单词或通常可以理解的缩写。 (2)如果在命名中使用特殊约定或缩写,则要进行注释说明。 (3)对于变量命名,一般不取单个字符 ,例如i、j、k. (4)函数名一般以大写字母开头;所有常量名字母统一用大写,8.1.3 注释说明,注释有助于程序员理解程序的整体结构,也便于以后程序代码的维护与升级。常用的规则如下: (1)注释语言必须准确、简洁且容易理解; (2)程序代码源文件头部应进行注释说明 ; (3)函数头部应进行注释; (4)程序
4、中所用到的特定含义的常量、变量,在声明时都要加以注释,5)对于宏定义、数据结构声明,如果其命名不是充分自注释的,也要加以注释。 (6)如果注释单独占用一行,与其被注释的内容进行相同的缩进方式,一般将注释与其上面的代码用空行隔开 (7)程序代码修改时,其注释也要及时修改,一定要保证代码与注释保持一致,命名规则示例,8.2 嵌入式C程序设计中的位运算,在嵌入式程序设计中,位操作是最常用的运算之一,因为在很多情况下要对寄存器中的某位或某个管脚进行操作,这些都需要用位操作来完成,8.2.1 按位与操作,按位与运算符“ printf(numbert exp2t exp3t exp4n); printf(
5、-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
6、.1 可重入函数,如果某个函数可以被多个任务并发使用,而不会造成数据错误,我们就说这个函数具有可重入性(reentrant),可重入函数可以使用局部变量,也可以使用全局变量。 如果使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护,示例解析,分析下面的函数是否具有可重入性 static int tmp; void swap(int* a, int* b) tmp=*a; *a=*b; *b=tmp;,void swap(int* a, int* b) int tmp; tmp=*a; *a=*b; *b=tmp;,在操作系统中,通过信号量机制使得函数具有可重入性: stat
7、ic int tmp; void swap(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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025农银投资春季招聘6人笔试历年典型考题及考点剖析附带答案详解2套
- 2025内蒙古鄂尔多斯市政汇公路管理有限公司招聘12人笔试历年备考题库附带答案详解
- 2025内蒙古呼和浩特市城市燃气热力集团有限公司招聘笔试提示笔试历年难易错考点试卷带答案解析
- 2025兴业银行驻马店分行招聘笔试历年典型考题及考点剖析附带答案详解2套
- 2025兴业银行成都分行社会招聘(3月)笔试历年典型考题及考点剖析附带答案详解
- 2025交通银行湖南分行春季校园招聘笔试历年典型考题及考点剖析附带答案详解2套
- 机械零部件加工厂机械绞伤事故救援预案
- 铁路运输安全生产规范
- 企业资金风控方案
- 企业研发流程管理方案
- AIGC项目实践:从入门到行业应用课件 项目11 智能体应用与旅游攻略小助手开发
- 2026年湖南省常德市八年级地生会考题库及答案
- 2026年证券法律法规重点题库
- 2026年护理三基知识考试必考题库及答案
- 《脓毒症和脓毒性休克管理国际指南2026》深度解读课件
- 2026年辐射考核预测试题有答案详解
- 2027届新高考语文热点精准复习:高中教材全五册单元任务及对应高考知识点梳理
- 埃博拉病毒病防控防护指南(2025版)
- 2026年中国医药集团校招面试模拟题及医药流通模式解析
- 2026广东惠州惠城区桥东街道招聘党建联络员和村(社区)“两委”班子储备人选11人笔试参考题库及答案详解
- 2026中国监护仪行业渠道冲突与管理优化研究报告
评论
0/150
提交评论