嵌入式软件开发技巧

嵌入式软件开发技巧

ID:27499323

大小:160.00 KB

页数:14页

时间:2018-12-04

嵌入式软件开发技巧_第1页
嵌入式软件开发技巧_第2页
嵌入式软件开发技巧_第3页
嵌入式软件开发技巧_第4页
嵌入式软件开发技巧_第5页
资源描述:

《嵌入式软件开发技巧》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、嵌入式软件/************************Chapter1语法类***********************/1.volatile作用?应用场合举3例volatile修饰的变量表示这个变量可能会被意想不到的改变,对该变量的操作将不作优化,用到该变量时都从这个变量的原始地址读取,而不是用保存在寄存器里的备份。Volatile常用在:1).硬件寄存器(如:状态寄存器)。2).中断程序中会访问到的非自动变量(Non-automaticvariables)。3).多线程应用中几个任务共享的变量2.一

2、个参数既可以是const还可以是volatile吗?解释为什么。是的。比如只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。3.一个指针可以是volatile吗?解释为什么。是的。比如一个中断服务子程序修该一个指向一个buffer的指针时。4.用变量a给出下面的定义a)一个整型数b)一个指向整型数的指针c)一个指向指针的指针,它指向的指针是指向一个整型数d)一个有10个整型数的数组e)一个有10个指针的数组,该指针是指向一个整型数的f)一个指向有10个整

3、型数数组的指针g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数a)inta;//Anintegerb)int*a;//Apointertoanintegerc)int**a;//Apointertoapointertoanintegerd)inta[10];//Anarrayof10integerse)int*(a[10]);//Anarrayof10pointerstointegersf)int(*a)[10];/

4、/Apointertoanarrayof10integersg)int(*a)(int);//Apointertoafunctionathattakesanintegerargumentandreturnsanintegerh)int(*a[10])(int);//Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger2.什么是存储机制里的大、小端模式?试举例说明大端模式(big-edian):MSB存放在最低端的地址上

5、。举例,双字节数0x1234以big-endian的方式存在起始地址0x00002000中:

6、data

7、<--address

8、0x12

9、<--0x00002000

10、0x34

11、<--0x00002001在Big-Endian中,对于bit序列中的序号编排方式如下(以双字节数0x8B8A为例):bit

12、01234567

13、89101112131415MSB----------------------------------LSBval

14、10001011

15、10001010

16、=0x8B8A小端模式(little-endi

17、an):LSB存放在最低端的地址上。举例,双字节数0x1234以little-endian的方式存在起始地址0x00002000中:

18、data

19、<--address

20、0x34

21、<--0x00002000

22、0x12

23、<--0x00002001在Little-Endian中,对于bit序列中的序号编排和Big-Endian刚好相反,其方式如下(以双字节数0x8B8A为例):bit

24、15141312111098

25、76543210MSB-----------------------------------LSBval

26、

27、10001011

28、10001010

29、=0x8B8A3.写一段用来判断内存存储方式是大端还是小段的代码。联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性就可以轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。代码如下:intcheckCPUendian(){union{unsignedinta;unsignedcharb;}c;c.a=1;return(c.b==1);}/*return1:little-endian,return0:big-endian*/

30、4.定义一个返回值是指向函数的指针且有一个指向函数的指针作参数的函数。通用形式如下:typedefint(*P)();//定义一个函数指针P类型Pfunction(int(*p)());//定义一个函数返回值P类型,且定义一个指向函数的指针p作参数5.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#defineSECONDS_PER_YEAR(60*60

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。