嵌入式入门学习(四)

嵌入式软件开发学习圈2018-11-08 15:18:47

       今天带着大家一起学习嵌入式C语言编程  -----针对MC9S12X系列

下面我们开始

为了确定嵌入式系统合适的编程语言,需要了解以下问题:

  ① 计算机(如微控制器、微处理器或DSP芯片等)只接受“机器码”(即目标代码)指令。如果严格定义,机器码才是计算机的语言,而不是程序员使用的其他语言。但如果由程序员去解释机器码,则工作量是非常巨大的,而且也容易出错,是不可行的。

  ② 所有的软件,例如汇编语言、C语言、C++语言、Java语言等,为了能够被计算机执行,最终都必须翻译成机器码。

  ③ 嵌入式处理器的功能有限且内存有限,所以编程语言必须具有高效率。

  ④ 为嵌入式系统编程,经常需要对硬件进行底层访问操作,这意味着至少要能够读写特定的存储器地址。 

    C语言的特性如下:

  ① 它属于“中级语言”,不仅具有“高级语言”的特征(如支持函数和模块),还有“低级语言”的特性(可以通过指针访问硬件);

  ② 编程效率很高;

  ③ 十分流行且容易理解;

  ④ 即使是PC程序员,以前只使用过JavaC++语言,也能够很快理解C语言的语法和编程方法;

  ⑤ 每一个嵌入式处理器(从8位到32位或以上)都有良好且得到充分验证的C编译器;

  ⑥ 容易找到C语言编程经验的开发人员;

   ⑦ 容易找到有关资料、培训课程及相关网站等技术支持。

下面带着大家正式开始学习啦!!!!!!!!!!!!!!!!

介绍全局变量和局部变量

        变量是程序运行时在内存中存放数据的一个存储空间。对嵌入式系统来说,它是RAMROM(甚至是处理器的寄存器)上的存储单元。全局变量是为整个程序定义的,在程序运行中始终有效。用全局变量传递参数,是参数传递的常用方法。局部变量是在某个函数内部声明的变量,它只能被该函数访问。在嵌入式系统中,局部变量通常位于堆栈中。全局变量和局部变量的区别取决于在程序中的什么位置声明它。全局变量必须在函数外部声明,而局部变量则必须在一个函数内部声明。

通常在一个程序的开始部分进行头文件包含操作。头文件通常包括常量定义、变量定义、宏定义和函数声明等,程序员可以在自己的程序中嵌入它们。

宏定义#define指令

        C语言中允许用一个标识符来表示一个字符串,称为宏。被定义为宏的标识符称为宏名。在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换,这称为宏代换或宏展开。宏定义是由源程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的。 


数据类型


在声明变量的时候,可以规定变量的访问/存储类型,C语言有6个访问/存储关键字:externautostaticregisterconstvolatile

        ① extern说明该变量在另一个目标代码文件中声明和定义过。这些变量可以被所有函数访问。

        ② auto是默认的存储类型,在一个代码块内(或在一个函数头部作为参量)声明的变量,无论有没有访问/存储关键字auto,都属于自动存储类

运算符

    

指针

    指针是存放其他变量地址的变量。例如,一个字符型变量指针存放的是该字符变量的地址。声明一个指针变量的格式与声明一个变量的格式相同,只是在变量名前加一个*运算符。 

条件语句、循环语句及无限循环语句

条件语句在程序中会经常多次使用。如果某个定义的条件能够被满足,那么执行紧跟在条件语句之后的大括号内的语句(或者不带大括号的语句),否则程序会转到下一条语句或者转到另一组语句中执行。条件语句可以分为if语句和switch语句两大类。

        C语言有三种不同的循环结构:for循环、while循环和do-while循环。

        for循环的开头包含一条初始化语句、一个循环条件判断和一条更新语句。在更新语句后是一组指令组成的循环体,这组指令在循环条件满足之前重复执行。

        while循环与for循环类似,都是重复执行循环体内的指令,但它在while后只有一个循环终止条件。

        do-while循环基本上和while循环完全一样,唯一的区别是do-while循环先执行循环体语句,再判断终止条件。

函数定义

        函数是完成某个特定任务的一段独立代码,它必须具备三个特征:独立性、灵活性、可移植性。

下面介绍下编译器

C语言程序设计需要两个编译器。一个编译器在主机上运行,编译器生成目标文件,编译器可以是Turbo CBorland C C++VC等高级语言,用于开发、设计、测试以及调试目标系统;另一个编译器是交叉编译器,交叉编译器也是在主机上运行的,但是它为目标系统生成机器代码,对于大多数的嵌入式系统微处理器和微控制器来说,目标系统多选择指定的或者商用的交叉编译器使用。主机往往同时运行一个提供完整开发环境的编译器和交叉编译器,这意味着可以在主机上仿真、调试、模拟目标系统。


链接:https://pan.baidu.com/s/1xPm00MruAcBLaGl2eDq2zg 密码:sp4r