首先,why MSP430?虽然现在ARM系列MCU正在以不可逆转之势占领市场,TI公司的MSP430系列仍然有稳固的一席之地,很重要的原因是它的超低功耗特性。相比于其他架构单片机,它具备灵活丰富的时钟选项、外设时钟配置和工作模式选择,能够最大限度的降低工作电流,从而使它非常适合对功耗敏感的场合。
一、如何在Linux下搭建开发环境?
准备一块MSP430F2616的开发板,以及JTAG仿真器FET430UIF(如果是其它种类的仿真器,先要确认mspdebug是否支持)。然后,以Linux桌面发行版Fedora为例,使用yum安装msp430-gcc、mspdebug、msp430-libc(如果是Linux的桌面发行版Ubuntu,则使用apt-get)。
二、如何下载并调试程序?
将开发板与仿真器连接好,上电,在终端输入命令:
mspdebug -j uif -d /dev/ttyUSB0
-j的意思是使用JTAG而不是Spy-Bi-Wire;-d的意思是仿真器对应的设备号,如果有多个设备,就执行dmesg | grep ttyUSB,看看打印信息就知道了。不出意外的话,mspdebug命令会出现下面这样的提示信息:
Type "help " for more information.
Use the "opt" command ("help opt") to set options.
Press Ctrl+D to quit.
(mspdebug)
提示符后面可以输入命令。prog用来烧写程序,reset用来复位,run用来执行,而step用来单步执行等等。如果想要烧写程序,则输入:
(mspdebug)prog xxx.elf
三、如果编写简单的main.c文件并编译?
因为安装msp430-libc的时候,在/usr/msp430/include/下生成了头文件,所以最简单的main.c函数只需要:
#include // 使用尖括号,include对应MCU的头文件
int main (void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0xFF;
while (1) {
P1OUT = 0x00;
P1OUT = 0xFF;
}
return 0;
}
编译使用msp430-gcc命令:
msp430-gcc -mmcu=msp430f2616 -o main.elf main.c
(要注意的是,因为msp430系列的单片机watch dog是默认打开的,所以需要先将它关闭,然后再操作IO口。)
四、如何编写Makefile文件?
如果源文件不止main.c,而是包括很多其他的.c文件,就需要编写Makefile文件告诉编译器该怎么做了。Makefile的基本格式是:描述一个.o文件由哪几个.c和.h文件组成(与.o文件同名的.c文件可省略不写),然后执行xxx-gcc的编译命令。
.PHONY表示,clean是个伪目标文件,执行make时不会执行它,而执行make clean时才会执行。编译命令必须以tab键开始,否则不能识别。
OBJECTS = main.o led.o timedelay.o uart.o
CC = msp430-gcc
MCU = msp430f2616
FLAGS = -mmcu=$(MCU) -Wall
main.elf: $(OBJECTS)
$(CC) $(FLAGS) -o main.elf $(OBJECTS)
main.o: timedelay.h led.h uart.h
$(CC) $(FLAGS) -c main.c
timedelay.o: timedelay.h
$(CC) $(FLAGS) -c timedelay.c
led.o: led.h timedelay.h
$(CC) $(FLAGS) -c led.c
uart.o: uart.h timedelay.h
$(CC) $(FLAGS) -c uart.c
.PHONY: clean
clean:
rm -f main.elf $(OBJECTS)
这样,MSP430F2616的开发环境就在Linux下搭好了,要继续后续的开发,就要开始学习MSP430F2616的特性和寄存器操作了。值得注意的是,MSP430F2616区别于其他单片机的地方,是它的时钟源和工作模式,这也是它低功耗的主要原因之一,所以最好能把它的时钟管理部分好好的看一看,设置并观察一下不同时钟源的寄存器,感受一下运行速度,然后再学习UART、TIMER等等外设。
DiracFatCat 2014-2-25 13:47
345002072_353389109 2014-2-25 12:22