- 1、本文档共85页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
嵌入式C程序架构
软件架构屏幕操作键盘操作内存操入式C编程综述05性能优化★★★★
软件架构模块划分1任务模式中断服务程序硬件驱动C的面向对象化
模块划分的“划”是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分,合作完成系统的需求。软件架构C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能。
模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;模块划分的方法某模块提供给其它模块调用的外部函数及数据需在.h文件中冠以extern关键字声明;仅在模块内部使用的函数和全局变量需在.c文件开头冠以static关键字声明;永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作。
一个不好的例子/*module1.h*/inta=5;/*在模块1的.h文件中定义inta*//*module1.c*/#includemodule1.h/*在模块1中包含模块1的.h文件*//*module2.c*/#includemodule1.h/*在模块2中包含模块1的.h文件*//*module3.c*/#includemodule1.h/*在模块3中包含模块1的.h文件*/结果。。。在多个模块中共享变量
一个好的例子/*module1.h*/externinta;/*在模块1的.h文件中声明inta*//*module1.c*/inta=5;/*在模块1的.c文件中定义inta*//*module2.c*/#includemodule1.h/*在模块2中包含模块1的.h文件*//*module3.c*/#includemodule1.h/*在模块3中包含模块1的.h文件*/
一个嵌入式系统通常包括两类模块:硬件驱动模块,一种特定硬件对应一个模块;软件功能模块,其模块的划分应满足低耦合、高内聚的要求。两种类型模块
单任务、多任务单任务:微观串行、宏观串行多任务:微观串行、宏观并行任务模式
从CPU复位时的指定地址开始执行单任务程序典型架构跳转至汇编代码startup处执行;跳转至用户主程序main执行,在main中完成:初始化部分硬件设备;初始化各软件模块;进入死循环(无限循环),调用各模块的处理函数
无限循环的两种方案while(1)
{
}01好:一目了然for(;;)
{
}02不好:含义不明确
中断是嵌入式系统中重要的组成部分,但是在标准C中不包含中断。许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标识中断服务程序(ISR),类似于__interrupt中断服务程序当一个函数被定义为ISR的时候,编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码。
中断服务程序需要满足如下要求:不能返回值;不能向ISR传递参数;ISR应该尽可能的短小精悍;printf(char*lpFormatString,…)函数会带来性能问题,不能在ISR中采用。中断服务程序的特点
在项目的开发中,设计一个队列,在中断服务程序中,只是将中断类型添加入该队列中,在主程序的无限循环中不断扫描中断队列是否有中断,有则取出队列中的第一个中断类型,进行相应处理。中断服务程序模型
中断服务程序模型typedefstructtagIntQueue /*存放中断的队列*/{ intintType; /*中断类型*/ structtagIntQueue*next;}IntQueue;IntQueue*lpIntQueueHead;__interruptISRexample(){ intintType; intType=GetSystemType(); /*得到中断类型*/ QueueAddTail(lpIntQueueHead,intType); /*在队列尾加入新的中断*/}
主程序模型While(1){ if(!IsIntQueueEmpty())
{ intType=GetFirstInt();
switch(intType) { casexxx: /*中断处理部分代码*/
…
break; casexxx:
…
break;
… } }}
一个硬件驱动模块通常应包括如下函数:中断服务程序ISR硬件初始化 修改寄存器,设置硬件参数(如UART应设置其波特率,AD/DA设备应设置其采样速率等); 将中断服务程序入口地址写入中断向量表;硬件驱动模块
一个硬件驱动模块通常
您可能关注的文档
- 嵌入式系统电子课件-1 绪论.pptx
- 嵌入式系统电子课件-2.1 交叉开发环境.pptx
- 嵌入式系统电子课件-2.2 Linux开发工具链.pptx
- 嵌入式系统电子课件-2.3 编辑器.pptx
- 嵌入式系统电子课件-2.4 编译器.pptx
- 嵌入式系统电子课件-2.6 调试器.pptx
- 嵌入式系统电子课件-2.7 自动化编译配置文件.pptx
- 嵌入式系统电子课件-3.2 bootloader.pptx
- 嵌入式系统电子课件-3.3 内核编译.pptx
- 嵌入式系统电子课件-3.4 busybox.pptx
- 江苏省兴化市顾庄学区重点名校2025届中考试题猜想生物试卷含解析.doc
- 河北省石家庄市28中学教育集团达标名校2025届中考考前最后一卷生物试卷含解析.doc
- 2025届广东省珠海市斗门区市级名校中考冲刺卷历史试题含解析.doc
- 海口市重点中学2025届中考化学模拟预测题含解析.doc
- 浙江省嘉兴市桐乡2025届中考三模生物试题含解析.doc
- 青海省海南市市级名校2025届中考生物猜题卷含解析.doc
- 2025届江西省南昌市第十九中学毕业升学考试模拟卷生物卷含解析.doc
- 山西省泽州县晋庙铺镇拦车初级中学校2025届中考三模生物试题含解析.doc
- 云南省曲靖市2024-2025学年高三年级第二次教学质量监测数学答案.pdf
- 2025届云南师范大实验中学中考一模历史试题含解析.doc
最近下载
- (公司法试题及答案.doc VIP
- 人教五四 六年级 下册 语文 第五单元《中国有能力解决好吃饭问题 第一课时》课件.pptx VIP
- 触电事故及安全防范技术培训.pptx
- 从教育大国迈向教育强国.docx VIP
- 病理学-生殖系统和乳腺疾病2015.pptx VIP
- 7-1中华民族大家庭 五年级道德与法治上册课件(部编版).ppt
- 中国百年工运史知识题库(附答案).docx VIP
- 2019.05.26 【第2季-数资】2020国考行测模考大赛第二季解析课—数资 杜岩(讲义+笔记)(9元课:2020国考行测模考大赛解析课)(公考).pdf
- 《建设工程监理规范》GB50319-2023年.pdf
- LSMaster K系列可编程逻辑控制器 指令手册.pdf
文档评论(0)