嵌入式中的 C 语言
嵌入式C语言和普通C语言在语法上几乎没有差别其主要差别在于普通C语言的运行环境是OS之上,有很多的标准库函数支撑调用,分配的内存是电脑的内存,其处理器就是电脑的CPU;而在嵌入式环境中,会涉及到底层的硬件,而硬件本身是没有标准库可以调用的,因而就需要开发者使用C语言编程调试硬件,使其可以工作,对于开发某一款芯片,有针对的编译器(或者交叉编译环境),可以分配的内存则是芯片的RAM、Flash,处理器则是芯片自身带的MCU,例如ARM、DSP等。
1. 嵌入式C语言的基本结构及其特点:
所有的C语言程序都需要包含main()函数,代码从main()函数开始执行;这一条在嵌入式中不一定完全正确,在执行main()函数之前也有开发者可以操纵的空间,因而开始函数可以不是main(),例如也可以是myMain()这样的函数,而这所涉及到的知识已经超过基础知识的范围,会在后续详细说 明;
C语言的语句以用分号“;”结束;
C语言的注释有行注释(“//”)和段注释(“/…/”);
函数是C语言的基本结构,每个C程序都是由至少一个函数组成;
C语言的文件有两种格式:源文件.c文件和头文件.h文件,通常.c文件用于功能函数的实现,而.h文件用于预处理、宏定义和声明等;在嵌入式中,通常将某个硬件模块的功能实现函数及其声明和包含的全局变量声明分别处理到一个.c和.h文件中,例如led.c、hello.c和led.h、hello.h就分别对应于LED灯的功能函数及其声明和hello的功能函数及其声明;
我们将这种基于某个模块的独立设计称之为模块化设计,在一个系统中通常是由许许多多的模块共同组成的,因而模块化设计是一个非常科学且非常值得学习的程序设计方法;
除了模块化设计,通常嵌入式的编程设计还有层次化设计。在一个工程系统中,硬件驱动仅仅只是第一步,对硬件的应用则是一个功能丰富的系统的更进一步的设计,通常在这一块会设计到例如图像处理、数据处理等算法;我们可以笼统的将一个嵌入式工程系统分为驱动层和应用层。
2. 数据类型
C语言数据类型(图片来源百问网)