嵌入式系统C语言编程的方法的研究.docVIP

嵌入式系统C语言编程的方法的研究.doc

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

嵌入式系统C语言编程的方法的研究   摘要:嵌入式系统是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高。特别是随着消费家电的智能化,嵌入式更显重要。未来的物联网时代,射频识别技术都是基于嵌入式的基础上在互联网上完成的一个通信技术。   关键词:嵌入式系统;C语言;编程思维   中图分类号:TP312文献标识码:A文章编号:1672??7800(2011)02??0063??02         作者简介:赵兵(1976-),安徽怀远人,淮北煤炭师范学院讲师,研究方向为数据通信与计算机网络;孙梅(1977-),女,安徽合肥人,硕士,淮北煤炭师范学院讲师,研究方向为数据通信与计算机网络。1嵌入式系统C语言编程思维   一般形式的软件编程不同于嵌入式系统C语言编程,嵌入式系统编程建立在特定的51单片机、ARM芯片、DSP数字处理芯片等硬件平台上,所以要求其编程语言具有较强的硬件操控能力。汇编语言是最接近于机器语言的一种编程语言。但是,由于汇编语言结构的复杂性,且移植到不同的硬件平台,所以它并不是嵌入式系统开发的一般选择。而与之相比,C语言是一种最接近机器语言的高级语言,称之为嵌入式底层硬件开发的最佳编程语言。   在了解嵌入式系统构成的基础上,嵌入式C语言的编程要注意以下几个方面:   1.1程序模块化    是指怎样合理的将一个很大的工程文件划分为一系列功能独立的各个模块进行编程、编译、调试。C语言是一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了相对论)来划分,C语言程序模块化设计需要涉及的概念:①一个程序文件(.c文件)和一个库文件(.h)文件的合成一个模块,头文件(.h)中是对于该模块软硬件接口的声明;②某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;③以static关键字声明的变量,是模块内的函数和全局变量,需在.c文件开头;④只有在汇编中,才可以认为定义变量和声明变量的区别在于定义会产生内存分配的操作,所以,禁止.h文件中定义变量。   1.2任务模式选择   所谓任务模式选择,就是单任务还是多任务的选择。“单任务系统”是指该系统模式下,不能支持在同一时刻下的多任务并发操作。在计算机编译原理中,也介绍过,计算任务的执行,可以认为是宏观串行地执行一个任务。而多任务系统则可以宏观并行(微观上是串行)地“同时”执行多个任务。多任务的并发执行通常依赖于一个多任务操作系统(OS),多任务OS的核心是系统调度器,它使用任务控制块(TCB)来管理任务调度功能。   嵌入式多任务OS的典型例子有Vxworks、ucLinux等。嵌入式OS并非遥不可及的神坛之物,我们可以用不到1000行代码实现一个针对80186处理器的功能最简单的OS内核,作者正准备进行此项工作,希望能将心得贡献给大家。   1.3单任务模式程序   (1)从MCU复位(reset)时的指定地址开始执行;   (2)跳转至汇编程序startup处执行;   (3)跳转至用户主程序main函数执行,在main从上而下顺序执行:①初始化(驱动程序)各硬件设备;②初始化(各接口程序)各软件模块;③进入死循环(无限循环),调用各模块的处理函数   while(1) { }   也可利用无条件循环这样写:   for(;;){}   用户main函数和各模块的处理函数都以C语言完成。用户main函数最后都进入了一个死循环,这也是一个可选方案。   1.4中断服务程序   中断是嵌入式系统中重要的组成部分,它规定了一个硬件在规定的条件下,跳转到其他子函数执行其他优先级高的任务。但是在标准C中不包含中断。因此许多编译开发商在标准C上增加了对中断的支持。当一个函数被定义为ISR的时候,编译器会自动配置程序所需要的函数的堆栈。   在下面的一个队列,将中断类型添加到队列中时,在main函数的执行过程中,主程序死循环中不断扫描该程序是否有中断,有则取出中断函数,进行相应的处理。   在下面的一个队列,在中断服务程序中,只是将中断类型添加入该队列中,在主程序的死循环中不断扫描中断队列是否有中断,有则取出队列中的第一个中断类型,进行相应处理。   /* 存放中断的队列 */   typedef struct tagIntQue   {   int intType; /* 说明类型 */   struct tagIntQue *next;   }IntQueue;   IntQueue lpIntQueHead

文档评论(0)

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

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

1亿VIP精品文档

相关文档