1 / 60
文档名称:

嵌入式系统c语言讲座(freescale).doc

格式:doc   页数:60页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

嵌入式系统c语言讲座(freescale).doc

上传人:分享精品 2016/3/13 文件大小:0 KB

下载得到文件列表

嵌入式系统c语言讲座(freescale).doc

相关文档

文档介绍

文档介绍:1 嵌入式系统的 C语言译自《 C for Embedded Systems 》讲稿刘永重译一、 C 语言基础 1、什么是 C? ‘C’程序语言最初是由 Dennis Ritchie 在 1971 年为 UNIX 系统开发并实现的。 C 的一个最大优点是与任何特定的硬件或系统无关。这使得一个用户写的程序不作任何修改就能运行在几乎所有的机器上。 C通常被称为中级计算机语言,因为它将高级语言的要素与汇编语言的功能结合了在一起。 2、为什么用 C? C非常灵活,而且可随心所欲。这种自由赋予 C非常强大的功能,有经验的用户可以掌握; C 是一个相对小的语言,但是它经久耐用; C 有时被认为是“高级汇编语言”;低级(位操作) 编程也容易实现;松类型(不象其它高级语言);C 是结构化编程语言; C 允许你创建你脑海中已有的任何任务。 C保留了程序员知道正在做的事情的基本体系;它只需要他们明白地表达其意图。 3、为什么不用 C?文化的问题…当考虑转到 C语言时,我们会遇到一些共同的问题: 产生大而低效的代码;标准 IO 程序的雍余代码( printf , scanf , strcpy 等); 存贮器定位的使用: malloc(),alloc() …; 堆栈的使用,在 C 中不很直接;在 RAM 和 ROM 中数据的声明;难于写中断服务程序。 4、 8位微控制器的 ANSI C 对于嵌入式系统,纯粹的 ANSI C并不方便,因为: 嵌入式系统与硬件打交道。 ANSI C 提供的在固定存贮空间用寄存器寻址的工具非常拙劣; 几乎所有的嵌入式系统使用中断; ANSI C 有各种类型的促进规则,对 8 位机来说绝对是性能杀手;一些微控制器结构没有硬件支持 C堆栈;很多微控制器有多个存贮空间。 5、打破一些 C范例当在低端的 8位微控制器上用 C语言,应想法使代码变小。这意味着打破一些编程规则: 开/关全局中断;使用 GOTO 语句;全局标号;全局寄存器段;指针支持。 6、嵌入式与桌面编程嵌入式编程环境的主要特点: 有限的 RAM ;有限的 ROM ;有限的栈空间;面向硬件编程;严格的定时( ISR ,任务,…); 很多不同种类的指针( far/near/rom/uni/paged/ …);特殊关键字/标识符(@, interrupt , tiny ,…)。 7、汇编与 C编译器只是一个能干的优秀汇编程序员。写能够转换为高效率汇编代码的好的 C代码,比手工写高效率的汇编代码容易得多。 C是终极解决办法,但其本身并未终结。 8、为什么改用 C? 有很多原因用 C语言而不用汇编: C 使我们提高效益;用 C 写的代码更可靠; C 代码更容易升级和扩展;不同平台之间更容易迁移;代码容易维护;文档、书籍、第三方库和程序都可得到。 9、C代码结构如下图所示, 一个 C程序基本由以下部分组成: 2 预处理命令、类型定义、函数原型(声明传给函数的函数类型和变量)、变量和函数。一个程序必须有一个 main() 函数,每个命令行必须用分号( ;)结束。 10、 C函数一个函数的结构如下: 类型函数名(参数) { 本地变量 C 语句} 3 11、C关键字 1)数据类型 char short signed unsigned int float long double 2)修饰符 const static volatile restrict 3)标识符 struct union void enum 4)选择体 if else switch case default 5)存贮指定 register typedef auto extern 6)循环体 do while for 7)跳转 goto continue break return 8)功能指定 inline 9)预处理指示#include #define #undef #line #error #pragma 10)条件编译# if# ifdef # ifndef # elif # else # endif 12、C操作符 1)基本表达式和后缀操作符()子表达式和函数调用[]数组下标->++ 增加(后缀) --减少(后缀) 2)一元操作符!逻辑非~取补++ 增加(前缀)--减少(后缀)-一元减+一元加(类型)类型强制*间接指针&取地址 sizeof 大小 3)赋值符=相等赋值+= 加等于-=减等于*=乘等于/=除等于%= 求余等于<<= 左移位等于>>= 右移位等于&= 按位与等于^=按位异或等于|=按位或等于 4)位操作&位与^位异或|位或<<位左移>> 位右移 5)数学运算*乘/除%求余+加-减 6)关系运算<小于<= 小于或等于>大于>= 大于或等于== 相等测试!=不等测试 7)逻辑运算&& 逻

最近更新