- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对本部分的要求 一般采用C语言开发,应重点掌握用C语言开发嵌入式系统 对于初学者和嵌入式应用人才:只需要初步学习和掌握基本的指令系统以及基本的汇编程序设计技术,能够达到一边查找指令手册、一边阅读汇编源代码的程度即可 一般启动代码都是采用汇编语言编写的,应能够理解和修改启动代码 1 ARM处理器寻址方式 寻址方式分类 寻址方式分类——寄存器寻址 寻址方式分类——立即寻址 寻址方式分类——寄存器移位寻址 寻址方式分类——寄存器间接寻址 寻址方式分类——基址寻址 寻址方式分类——多寄存器寻址 寻址方式分类——堆栈寻址 寻址方式分类——相对寻址 2、ARM汇编语言程序结构 ARM指令集——条件码 4 常用指令介绍 (1)存储器访问指令 (2)ARM数据处理指令 (3)乘法指令 (4)分支指令 (5)杂项指令 5 ARM伪指令 ARM伪指令 6 嵌入式系统中的C语言编程 ARM支持的基本数据类型 整数类型: char 长度为8位的字节数据; short 长度为16位的半字数据; int 长度为32位的字数据; long 长度为32位的字数据; long long 长度为64位的双字数据; 浮点数类型: float 长度为32位的浮点数; double 长度为64位的浮点数; 应用指针直接操作内存或寄存器 例如:直接访问地址单元0xF000FF00 : U8 *p=(U8 *)0xF000FF00; *p=5; #define pISR_EINT4567 (*(unsigned *) _ISR_STARTADDR+0x74) pISR_EINT4567=(int)Eint4567Isr; 直接访问寄存器: #define IODIR (*((volatile unsigned long *) 0xE0028008)) IODIR=BEEPCON; //设置I/O为输出 Volatile的用法 volatile在英文字典的解释为“易变的,反复无常的(性格)”。 编译器有一种技术叫数据流分析,分析程序中的变量在哪里赋值、哪里使用、哪里失效,分析结果可以用于常量合并,常量传播等优化。当它觉察到你的代码没有修改变量的值时,它就可能在你访问变量时提供上次访问的缓冲值,这能够提高程序的效率。 但这些优化可能会带来问题(特别是对硬件寄存器操作的程序中),这时需要用volatile关键词来禁止做这些优化。——告诉编译器:变量已经变化,不要用缓存值(变量可能会随时改变,不要对其优化,而是每次用的时候去读写该变量。) 使用volatile变量的场合 硬件寄存器通常要加volatile说明。 #define IO0DIR (*((volatile unsigned long *) 0xE0028008)) 在中断服务程序中修改的供其它程序检测的变量需要加volatile。 例如:中断服务程序常常通过改变一些全局变量来通知应用程序某个外部事件已经发生,这些全局变量不应该被优化。 多任务环境中各任务间共享的标志应该加volatile。 预编译(处理)指令 #define 与 #undef 使用#define预处理命令定义宏,例如定义寄存器的物理地址,用来设置或清除寄存器的值,也可以用它来定义屏蔽位。 例如: #define IO0DIR (*((volatile unsigned long *) 0xE0028008)) #define BEEPCON (0x17) IO0DIR=BEEPCON; //设置I/O为输出 #define TxRxD1 (PINSEL0 0xFFF0FFFF) | (0x0516) //不改变原来引脚的设置,将P0.8、P0.9设置为TxD1、RxD1功能 例:定义数码管每个段的位 #define SEG_A (110) #define SEG_B (111) … #define SEG_G (115) #define DISP_0 (SEG_A| SEG_B| SEG_C| SEG_D| SEG_E| SEG_F ) #define DISP_1 (SEG_B| SEG_C ) … #define DISP_9 (SEG_A| SEG_B| SEG_C| SEG_D| SEG_F|
您可能关注的文档
- 2014_ch8_第八章微机中断系统(中科大微机原理).pdf
- 2014考研英语新题型高分技巧(英语一)-洪源.pdf
- 2015年北京大学行政管理考研专业课 考研参考书 英语复习经验.pdf
- 2015年南开大学外国语学院考研《专业英语》考试大纲.pdf
- 2016年北京外国语大学英语学院翻译硕士考研真题,考研参考书解析.pdf
- 2016年对外经济贸易大学翻译硕士考研复习规划,考研参考书,考研真题解析,翻硕英语词汇总结.pdf
- 2016年社科院财经系财政学专业考博真题考博英语-育明考研考博.pdf
- 2016年社科院财经系产业经济学专业考博真题考博英语-育明考研考博.pdf
- 2016年社科院财经系金融学专业考博真题考博英语-育明考研考博.pdf
- 2016年社科院产企业管理专业考博真题考博英语-育明考研考博.pdf
文档评论(0)