- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.3.4 嵌入式程序设计中C语言的变量、数组、结构、联合 变量 [存储类型] 类型说明符 [修饰符] 标识符 [=初值] [,标识符[=初值]]…; 数组 一维数组: 类型说明符 标识符 [常量表达式][={初值,初值,…}]; char 标识符[ ] =“字符串”; 二维数组: 类型说明符 标识符[m][n] [={{初值表},{初值表}…}]; 指针数组和数组指针 类型说明符 *标志符 [常量表达式] [={地址,地址,…}]; 类型说明符 (*标志符)[ ][=数组标识符]; 结构说明 [存储类说明符] struct [结构原型名] { 类型说明标识符[,标识符…]; 类型说明标识符[,标识符…]; … }标识符[={初值表} [,标识符[={初值表}]…]; 联合说明 [存储类说明符] union[联合原型名] {类型说明符 标识符[,标识符…]; 类型说明符 标识符[,标识符…]; … }标识符 ={初值表}[,标识符[={初值表}]…]; 4.4 嵌入式C语言程序设计实例 5.4.1 嵌入式C语言程序编写的简单构架 5.4.2 Flash测试代码介绍 程序源代码介绍 整个测试程序主文件main.c的代码构成图如下图所示,由BootLoader启动程序进入C语言主函数main()入口。 4.4.2嵌入式C语言程序编写的简单构架 #include预编译指令 个C语言代码,一般要用#include编译指令将所需要的头文件加到该程序中,这是很有必要的,尤其是对编写较大的程序代码时。随后是定义一些外部变量,并对程序中的函数进行声明。 主函数main()的编写; 在每一个C语言代码中,一定要有一个main()函数,在该函数中完成该程序文件所要完成的各个功能,一般是通过调用各个子函数来完成。当然,它也可以调用其他文件中的函数。 完成相应功能的各个功能函数的编写。 各个函数之间可以相互调用。 4.4.3 Flash测试代码介绍 下面给出功能测试程序中Flash测试程序的代码结构图: 4.5.1变量定义 在变量声明的时候,最好把所有相同类型的变量放在一起定义,这样可以优化存储器布局。由下例可以看出: 对于局部变量类型的定义,使用short或char来定义变量并不是总能节省存储空间。有时使用32位int或unsinged int局部变量更有效率一些,如下图所示: 变量定义中,为了精简程序,程序员总是竭力避免使用冗余变量。但有时使用冗余变量可以减少存储器访问的次数这可以提高系统性能。 4.5.2参数传递 为了使单独编译的C语言程序和汇编程序能够互相调用,定义了统一的函数过程调用标准ATPCS。ATPCS定义了寄存器组中的{R0~R3}作为参数传递和结果返回寄存器,如果参数数目超过四个,则使用堆栈进行传递。 内部寄存器的访问速度是远远大于存储器的,所以要尽量使参数传递在寄存器里面进行,即应尽量把函数的参数控制在四个以下。 4.6.1ATPCS介绍 ATPCS(ARM-Thumb Produce Call Standard)是ARM程序和Thumb程序中子程序调用的基本规则,目的是为了使单独编译的C语言程序和汇编程序之间能够相互调用。这些基本规则包括子程序调用过程中寄存器的使用规则、数据栈的使用规则和参数的传递规则。 寄存器的使用规则: 寄存器 别名 特殊名 使用规则 R0 a1 ? 参数/结果/scratch寄存器1 R1 a2 ? 参数/结果/scratch寄存器2 R2 a3 ? 参数/结果/scratch寄存器3 R3 a4 ? 参数/结果/scratch寄存器4 R4 v1 ? ARM状态局部变量寄存器1 R5 v2 ? ARM状态局部变量寄存器2 R6 v3 ? ARM状态局部变量寄存器3 R7 v4 wr ARM状态局部变量寄存器4 Thumb状态工作寄存器 R8 v5 ? ARM状态局部变量寄存器5 R9 v6 sb ARM状态局部变量寄存器6, 在支持RWPI的ATPCS中为静态基址寄存器 R10 v7 sl ARM状态局部变量寄存器7, 在支持数据栈检查的ATPCS中为数据栈限制指针 R11 v8 fp ARM状态局部变量寄存器8/帧指针 R12 ? ip 子程序内部调用的scratch寄存器 R13 ? sp 数据栈指针 R14 ? lr 连接寄存器 R15 ? pc 程序计数器 数据栈的使用规则 根据堆栈指针指向位置的不同 和增长方向的不同可以分为以下4种数据栈 : FD (Full Desc
您可能关注的文档
- 第四章FX系列可编程序控制器简介.ppt
- 第四章6[1].1人类地理环境的协调发展.ppt
- 第四章、亲属关系原理.ppt
- 第四章世界经典咖啡配制方法.ppt
- 第四章中国电视剧史 (3).ppt
- 第四章个体心理差异与管理.ppt
- 第四章主板-幻灯片.ppt
- 第四章互感器的结构和工作原理.ppt
- 第四章人的心理与生理节律.ppt
- 第四章会计职业道德.ppt
- 2025年春新北师大版八年级物理下册全册课件.pptx
- 2025年春新北师大版八年级物理下册全册教学课件.pptx
- 2025年秋季新北师大版八年级上册物理全册教学课件.pptx
- 2025年秋季新人教版九年级上册化学全册课件.pptx
- 2025年新人教版八年级上册物理全册课件.pptx
- 2025年秋季新人教版九年级上册化学全册教学课件(新版教材).pptx
- 新人教版七年级上册英语全册课件(2025年新版教材).pptx
- 锂离子电池前驱体磷酸铁合成方法研究现状及展望.docx
- 2024年东盟石油和天然气更新报告(英文版)-东盟.docx
- DB3209_T 1207.2-2022 建设工程档案管理 第二部分:房屋建筑工程文件归档和档案移交范围.docx
最近下载
- 《出师表》历年中考文言文阅读试题147篇(含答案与翻译).pdf VIP
- 证券股指量化交易策略研究基于价差的高频统计套利01ema模型.pdf
- 青铜与商朝文化ppt-通用课件.pptx VIP
- 2020-2021学年新教材物理鲁科版选择性必修第二册-第5章-第2节-科学制作-简单的自动控制装置-课件(62张)
- 新人教版数学四年级下册全册各单元教材解读精品课件PPT.pptx
- 小学数学二年级数学教学经验分享.pptx
- GJB 438C-2021 军用软件开发文档通用要求 (高清,带章).docx
- 美科乐器 MK-931说明书用户手册.pdf
- 化工分离过程__吸附与制备色谱.pptx VIP
- 捕捉主升浪的均线系统.doc VIP
文档评论(0)