- 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语言嵌入式系统编程修炼之道
? e-mail:21cnbao@21
C语言嵌入式系统编程修炼之道——背景篇... 1
C语言嵌入式系统编程修炼之道——软件架构篇... 4
1.模块划分... 4
2.多任务还是单任务... 5
3.单任务程序典型架构... 6
4.中断服务程序... 7
5.硬件驱动模块... 9
6.C的面向对象化... 10
总结... 10
C语言嵌入式系统编程修炼之道——内存操作篇... 12
1.数据指针... 12
2.函数指针... 13
3.数组vs.动态申请... 14
4.关键字const 15
5.关键字volatile. 16
6.CPU字长与存储器位宽不一致处理... 17
总结... 18
C语言嵌入式系统编程修炼之道——屏幕操作篇... 19
1.汉字处理... 19
2.系统时间显示... 20
3.动画显示... 21
4.菜单操作... 22
5.模拟MessageBox函数... 24
总结... 26
C语言嵌入式系统编程修炼之道——键盘操作篇... 27
1.处理功能键... 27
2.处理数字键... 28
3.整理用户输入... 29
总结... 30
C语言嵌入式系统编程修炼之道——性能优化篇... 31
1.使用宏定义... 31
2.使用寄存器变量... 31
3.内嵌汇编... 32
4.利用硬件特性... 32
5.活用位操作... 33
总结
?
?
C语言嵌入式系统编程修炼之道——背景篇
不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这样的特质。但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发的一般选择。而与之相比,C语言——一种“高级的低级”语言,则成为嵌入式系统开发的最佳选择。笔者在嵌入式系统项目的开发过程中,一次又一次感受到C语言的精妙,沉醉于C语言给嵌入式开发带来的便利。本文的目的在于进行“C语言嵌入式系统开发的内功心法”秀,一共包括25招。
图1给出了本文的讨论所基于的硬件平台,实际上,这也是大多数嵌入式系统的硬件平台。它包括两部分:
(1)???? 以通用处理器为中心的协议处理模块,用于网络控制协议的处理;
(2)???? 以数字信号处理器(DSP)为中心的信号处理模块,用于调制、解调和数/模信号转换。
本文的讨论主要围绕以通用处理器为中心的协议处理模块进行,因为它更多地牵涉到具体的C语言编程技巧。而DSP编程则重点关注具体的数字信号处理算法,主要涉及通信领域的知识,不是本文的讨论重点。
着眼于讨论普遍的嵌入式系统C编程技巧,系统的协议处理模块没有选择特别的CPU,而是选择了众所周知的CPU芯片——80186,每一位学习过《微机原理》的读者都应该对此芯片有一个基本的认识,且对其指令集比较熟悉。80186的字长是16位,可以寻址到的内存空间为1MB,只有实地址模式。C语言编译生成的指针为32位(双字),高16位为段地址,低16位为段内编译,一段最多64KB。
图1? 系统硬件架构
协议处理模块中的FLASH和RAM几乎是每个嵌入式系统的必备设备,前者用于存储程序,后者则是程序运行时指令及数据的存放位置。系统所选择的FLASH和RAM的位宽都为16位,与CPU一致。
实时钟芯片可以为系统定时,给出当前的年、月、日及具体时间(小时、分、秒及毫秒),可以设定其经过一段时间即向CPU提出中断或设定报警时间到来时向CPU提出中断(类似闹钟功能)。
NVRAM(非易失去性RAM)具有掉电不丢失数据的特性,可以用于保存系统的设置信息,譬如网络协议参数等。在系统掉电或重新启动后,仍然可以读取先前的设置信息。其位宽为8位,比CPU字长小。文章特意选择一个与CPU字长不一致的存储芯片,为后文中一节的讨论创造条件。
UART则完成CPU并行数据传输与RS-232串行数据传输的转换,它可以在接收到[1~MAX_BUFFER]字节后向CPU提出中断,MAX_BUFFER为UART芯片存储接收到字节的最大缓冲区。
键盘控制器和显示控制器则完成系统人机界面的控制。
以上提供的是一个较完备的嵌入式系统硬件架构,实际的系统可能包含更少的外设。之所以选择一个完备的系统,是为了后文更全面的讨论嵌入式系统C语言编程技巧的方方面面,所有设备都会成为后文的分析目标。
嵌入式系统需要良好的软件开发环境的支持,由于嵌入式系统的目标机资源受限,不可能在其上建立庞大、复杂的开发环境,因而其开发环境和目标运行环境相互分离。因此,嵌入式应用软件的开发方式一般是,在宿主机(Host)上建立开发环境,进行应用程序编码和交叉编译,然后宿主机同目标机(Target)建立连接,将应用程序
您可能关注的文档
- 2015全县义务教育均衡发展迎验档案整理要求(定稿)(教程解析.doc
- 2015人大代表述职教程解析.doc
- 2015人音版四年级下册音乐已改好的的教程解析.doc
- 2015山东省华医网好医生继续教育公共课程《实用急救技术》试题答案教程解析.doc
- 2015山东省继续教育《实用现场急救技术》完全题库及答案教程解析.doc
- 2015山东省卫生计生系统人员针对性普法考试答案(汇总)按字母排序满分答案教程解析.doc
- 2015山东省卫生计生系统人员针对性普法考试题库与答案教程解析.doc
- 2015山东省卫生计生系统针对性普法考试(医护类)答案99.9%包含教程解析.doc
- 2015山东省卫生计生系统针对性普法考试(医护类)答案教程解析.doc
- 2015山东省卫生网继续教育社区护理_试题_答案整理_非常全_80分没问题教程解析.doc
最近下载
- 湖南省长沙市2025届高三新高考适应性考试语文试题及答案解析.pdf VIP
- 正方体的11种展开图--A4直接打印版.docx VIP
- 《商品学》(第2版)1-11章题库章节练习题答案全书测试题参考答案含原题.pdf VIP
- 23ZG210预应力高强混凝土空心方桩.pdf
- 心理咨询师考试发展心理学知识习题.docx VIP
- 02S515排水检查井图集 .docx VIP
- (高清版)DG∕TJ 08-2165-2015 建设项目交通影响评价技术标准.docx VIP
- 3.3.5患者参与医疗安全(达B档).doc VIP
- 道口开设施工合同5篇.docx VIP
- 九一八国旗下演讲稿《勿忘国耻吾辈自强》.docx VIP
文档评论(0)