MSP430单片机基础
MSP430单片机的CPU属于RISC(精简指令集)处理器,RISC处理器基本上是为高级语言所设计的,因为精简指令系统很大程度上降低了编译器的设计难度,有利于产生高效紧凑的代码。初学者完全可以在不深入了解汇编指令系统的情况下,直接开始C语言的学习。本章介绍MSP430单片机软件工程的开发基础,主要讲解MSP430单片机C语言编程基础、MSP430单片机的软件编程方法及软件集成开发环境的基本操作。通过本章的讲解,旨在使读者对MSP430单片机的编程思想有一定的了解。
C语言基础
变量定义
单片机的RAM较小,运算速度有限,在编程时应注意通过合理的编码提高单片机的利用效率。对于小于256的正整数,定义为uint8_t,变量名可取ui8Count;如果有负数存在,可定义为int16 i16Flag。
变量名应有前缀,全局变量以"g_"开头,指针以“p"开头,结构体以”s"开头。
函数声明
调用函数之前首先要在所有函数外声明函数原型。
如果一个函数只能被本文件内的其他函数所调用,称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。
在声明函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。
程序编译
源文件分别编译,再将目标文件连接成可执行文件
$>gcc -c main.c
$>gcc -c function.c
$>gcc -o sum main.o function.o
当多人协作时,需要各自负责一部分工程,可以只是负责通信或着显示这块。这个时候,应该将自已写的这一块程序写成一个模块,单独调试,留出接口给其他模块调用,当小组成员都将自己写的模块写完并调试通过后,最后由项目组组长进行联调,这就要求程序必须模块化。
模块化程序设计需理解以下概念:
(1)模块是一个.c 文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;
(2)某模块提供给其他模块调用的外部函数及变量需在.h文件中冠以extern关键字声明;
(3)模块内的函数和全局变量需在.c文件开头冠以static关键字声明;
(4)永远不要在.h文件中定义变量。
(5)在.h文件中使用#ifndef条件编译,防止重复声明。
软件编程方法
最简单、最常用的MSP430单片机软件流程如图所示。主监控程序首先进行系统初始化,包括初始化I/O端口、片内外设和变量等,之后进入低功耗休眠模式。当被中断唤醒后,通过查询标志位来执行相应的任务。当查询结束后,再次进入低功耗休眠模式等待被中断唤醒。中断服务程序可以置位相应标志位或执行相应任务。用户可以选择在中断唤醒MSP430单片机后在主循环中通过查询标志位处理任务,也可以选择在中断服务程序中处理任务。可以将对定时要求不严格或实时性要求不高的任务放在主循环中,通过查询标志位来完成,例如,液晶显示任务等。将对定时要求严格或实时性要求较高的任务放在中断服务程序中完成,例如, ADC采样任务、按键处理任务等。
|