嵌入式C语言程序设计基础.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:6 大小:26KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

嵌入式C语言程序设计基础.pdf

嵌入式C语言程序设计基础.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

GeneratedbyFoxitPDFCreator©FoxitSoftwarehttp://www.foxitsoftware.comForevaluationonly.嵌入式C语言程序设计基础对于C语言大家应该都比较熟悉,它是一种结构化的程序设计语言,它的优点是运行速度快、编译效率高、移植性好和可读性强。因此在嵌入式程序设计中经常会用到C语言程序设计。嵌入式C语言程序设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。也就是说呢它首先是C语言程序设计,因此必须符合C语言基本语法,只是它是面向嵌入式的应用而设计的程序。本节课我们讲述的嵌入式C语言程序设计基础,一方面是对C语言基础知识的回顾,同时也是对面向嵌入式应用进行C语言程序设计的讲述。主要介绍C语言的一些基本语法及各个知识点在本教程例程中的应用。一、C语言的“预处理伪指令”在嵌入式程序设计中的应用如:A#include<string.h>B#defineULONGunsignedlongC#if_B0SIZE==B0SIZE_BYTEtypedefunsignedcharpB0SIZE;#elif_B0SIZE==B0SIZE_SHORTtypedefunsignedshortpB0SIZE;#elif_B0SIZE==B0SIZE_WORDtypedefunsignedlongpB0SIZE;#endif对于第1个例子,是文件包含伪指令,其作用是将头文件包含到程序中。1、文件包含伪指令格式#include<头文件名.h>;标准头文件#include“头文件名.h”;自定义头文件由此可见,头文件可分为标准头文件与自定义头文件。尖括号对内的头文件为标准头文件。标准头文件就是按dos系统的环境变量include所指定的目录顺序搜索头文件。也就是我们通常说的到系统指定的目录去搜索头文件。双引号对“”内的头文件名为用户自定义头文件。搜索时,首先在当前目录(通常为源文件所在目录)中搜索,其次按环境变量include指定的目录顺序搜索。搜索到头文件后,就将该伪指令直接用头文件内容替换。头文件中的内容一般是什么呢?内容一般是定义一些本程序要用到的符号常量、复合变量原型、用户定义的变量类型原型和函数的原型说明等等。比如说在S3CEV40开发板模块程序的设计过程中,程序员就把一些常量及地址宏定义及函数声明等设计成了头文件中,这样当程序中用到这些定义及说明时只需将这些头文件包含进来即可。如*File:main.c*Desc:cmainentry***************************************************************/*---includefiles---*/#include"44blib.h"#include"44b.h"#include"rtc.h"#include"../LCD_Test/bmp.h"……….……….其中1GeneratedbyFoxitPDFCreator©FoxitSoftwarehttp://www.foxitsoftware.comForevaluationonly."44blib.h"对程序开发中的函数进行了声明,并用宏定义对一些常用的表达式或常量进行了预定义;“44blib.c”中对开发中用到的一些库函数作了函数原型定义"44b.h"主要是用宏的方式定义了各模块中寄存器的地址。"rtc.h"对实时时钟模块程序中用到的常量做了宏定义。对于我们这里介绍的“预处理伪指令”它本身不是C语言的组成部分,因此不能直接进行编译,而必须在编译前由预处理器将这些“预处理伪指令”用实际的内容代替。因此也称为“编译预处理命令”或“编译预处理伪指令”。注意:伪指令行都以#号打头2、宏定义伪指令对于第2个例子,它是一个宏定义伪指令。其格式如下:格式:#define宏标识符宏体如同前面介绍的,宏定义伪指令必须在编译前由预处理器将程序中的宏标识符用相应的宏体替换。如#defineULONGunsignedlong将所有的ULONG用unsignedlong替换伪指令:简单宏、参数宏、条件宏,宏释放参数宏:例子说明#defineSQR(x,y)sqrt((x)*(x)+(y)*(y))源文件中有:z=SQR(a+b,a-b);/*替换为sqrt((a+b)*(a+b)+(a-b)*(a-b));*/由上面可见,参数宏类似于函数的调用。事实上,许多库函数是用参数宏写的。参数宏和函数的区别:一是形式参数表中没有类型说明符;二是参数宏在时空的开销上比函数都要小。条件宏:先测试