第7章(ARM的C语言基础及C标准库).pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章(ARM的C语言基础及C标准库)

* 第7章 ARM的C语言基础及C标准库 第7章 ARM的C语言基础及C标准库 本章主要描述在ARM系统上使用C语言的时候所需要特别 注意的细节。 一.数据类型 1.1 基本数据类型 ARM编译器支持的基本数据类型包括整数类型和浮点数类型,见下表 1.2 数据类型修饰符signed和unsigned 在C语言中,如果一个运算符两侧的操作数的数据类型不同,则系统按“先转换后运算”的原则进行运算。 对于无符号和有符号数据类型的转换原则:在C语言中,遇到无符号和有符号数之间的操作时,编译器会自动转化为无符号数来进行处理。 unsigned int a=10; signed int b=-100; 结论:ba,因为b转化为无符号数为b=4394985869 二.常量和变量 2.1 常量 2.1.1 整数 可以用十进制、十六进制表示,十进制由0~9的数字组成,不能以0开头,二者均可以用负号表示负数。 2.1.2 字符 由一对单引号及其所引起来的字符表示。 2.1.3 字符串 由一对双引号引起来的字符序列。 2.2 变量 2.2.1 constant ? 把一个对象或变量定义为constant类型,其值便不能被更新(read only),故定义时必须给它一个初始值; ? 如果函数中的指针参数在函数中是只读的,建议将其用constant修饰。 2.2.2 static ? 被static修饰的变量从时间域而言是全局变量,不过空间作用域不是全局的,可用于保存变量所在函数被累次调用期间的中间状态; cout在函数的第一次调用时分配和初始化,函数推出后其值仍然存在(时间域);但只能在函数内部才能访问cout(空间域)。 ? 访问控制原则: a. 模块儿内(但在函数体外),被声明为静态的变量可以被模块儿内所有函数访问,但不能被模块儿外其他函数访问,是一个本地的全局变量; b.模块儿内,被声明为静态的函数只可被这一模块儿内的其他函数调用。 2.2.3 局部变量定义使用注意事项 大多数ARM数据处理指令是32位的,而char和short定义的数据为8/16位的,要对其进行装载和存储时都要扩展(无符号数用0做扩展位,有符号数按符号位扩展),这种扩展是用多余的指令来实现的。故要避免把局部变量定义为short和char类型的(降低空间和时间效率)。 ? C程序代码 上述3个子函数的汇编语言实现分别为: 三.操作符 3.1 算术操作符 ? 包括+、-、×、/和%,当运算结果超过了数据类型的表示范围时会发生溢出; ? C代码 执行结果:n=0(相应的CPSR中Z=1,C=1),m=256。 3.2 关系操作符 关系操作符和操作数构成了一个逻辑表达式,这个逻辑表达式可以作为逻辑操作符的操作数,如if( x SCR_XSIZE y SCR_YSIZE )。 3.3 逻辑操作符 包括与()、或(||)和非(!)。 3.4 位操作符 位操作符用于操作整数值的位(可以操作的最小数据单位),理论上可以用位运算完成所有的运算和操作。位操作符在嵌入式开发中最为常用,来对变量或寄存器进行位操作,从而控制硬件,有效地提高程序运行的效率。 3.4.1 位与() ? 基本用途是清除某个位或某些位 ? 代码: 3.4.2 位或(|) ? 基本用途是设置某个位或某些位 ? 代码: 3.4.3 位异或(^) 把两个操作数中对应位的值相异的位置1。 3.4.4 左移操作符() ? 将操作数向左移n位,右边空出的位补0,左边移出的位被舍弃,可以用来设置寄存器的位 ? 代码:配置主频 结果为PLLCON[19:12]=M_DIV,PLLCON[9:4]=P_DIV,PLLCON[1:0]=S_DIV。 3.4.5 右移操作符() 将操作数右移n位,移出的位被舍弃,对于无符号数左边补0,有符号数补1。 3.4.6 求反(~) 四.控制结构 4.1 选择 分为if else和switch两种形式 4.2 循环 ? ARM的C语言编程中支持whi

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档