关于设计,生活和电子的二三事

走进MSP430(2)——第一个工程(CCSv6)

在上一篇中我们完成了开发环境的安装。下面开始我将会带大家开始学习MSP430编程。之后如果没有特殊说明都会使用MSP-EXP430G2(下称LAUNCHPAD)开发板作为示例。

这个开发板淘宝价格不到50块钱,板载仿真器方便使用。MSP430全系列寄存器配置是类似的,只要学会一款芯片其他芯片可以很容易学会使用。
买来的时候会附带一颗MSP430G2553芯片,把板子上原来的芯片取下,把这颗芯片换上。另外还附带一颗32.768KHz晶振,两个10PIN排座。MSP430所有芯片内部集成振荡器,没有特殊需要的话晶振不用安装;两个10PIN排座可以焊在另外的洞洞板上,可以在自己搭电路时候使用。

首先安装好CCS。将LAUNCHPAD插到电脑上,电脑会找到新硬件并自动安装驱动。打开CCS。CCS的界面可能和我的不一样,根据需要调整。如果有的窗口没有显示出来,可以在View菜单中打开。CCS打开时候会自动打开上次的工程。第一次打开时候左边列表是空的,表明还没有建立工程。

如果在安装CCS时候安装了MSPWare的话,点Project菜单,选第三项Examples,会弹出TI Resources的窗口。把左边芯片型号拉到MSP430G2xx,选择MSP430G2x53,在右边就会出现例程列表。

将右侧列表往下拖动,找到并单击msp430g2xx3_1,在弹出的对话框中选MSP430G2553,点OK,屏幕左侧工程列表中出现名为msp430g2xx3_1的工程。双击工程文件列表中的msp430g2xx3_1.c打开文件。

代码文件中前面部分为版权声明可以不看。往下翻找到MSP430G2xx3 Demo – Software Toggle P1.0一行,这行开始往下为例程功能说明,之后是程序源代码。代码不长,实现的功能也很简单,就是让板子上的LED1闪烁。每行代码后面都有说明帮助理解。

点击界面左上角锤子图标,编译代码,再点右边的虫子图标开始仿真。

进入仿真状态之前会有一个ULP Advisor提示,是对于代码进行低功耗分析,直接点Proceed即可。不想再弹出提示的话可以勾选左边Do not show…。第一次运行时候可能提示升级仿真器固件,按照默认选项确定即可,等待升级完成之后会自动进入仿真界面。

开始仿真时候程序会停在main函数开始。可以单步执行或一直运行。当选择一直运行时可以看到板子上LED1闪烁。

在一直运行状态下可以点上方工具栏黄色暂停按钮暂停运行,或者在代码框行号左边双击设置断点,在程序运行到断点时会停下。

行号左边圆形带对勾的符号就是断点标志,程序在运行这一行之前会停下。某些行无法设置断点,这个时候程序会在这行后面最近的能设置断点的地方设置断点。如果想在这一行设置断点可以在这一行加上一行_nop();然后换行,这样就能在这一行设置断点了。

比如上图在volatile unsigned int i;一行没法设置断点,在这一行行号前面双击的话断电会设置在P1OUT ^= 0x01;一行。在这一行前面加上_nop();然后换行,重新编译仿真之后就可以在_nop();一行设置断点了。可能有些时候一行_nop();不行,多加几行试试。前面的断点图标为灰色时候表示当前断点不起作用,可能是被禁用了,也可能是在这一行设置断点失败,可以双击取消然后再试。_nop();表示CPU不做任何事情,浪费一个时钟周期,不会对其他程序有影响。

设置断点之后再点击上方工具栏Resume按钮,程序就会停在设置断点的位置。调试时候可以在怀疑程序有问题的地方设置断点确定问题。

程序解读
在看代码时候建议同时打开MSP430x2xx Family User’s Guide文件参考。文件可以从http://www.ti.com/product/msp430g2553下载。
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
停止内部看门狗
P1DIR |= 0x01; // Set P1.0 to output direction
设置P1.0为输出端口。所有MSP430 GPIO上电默认为输入状态,用作输出端口时需首先配置
for (;;)
无限循环
{
volatile unsigned int i;
定义无符号整型变量i,并说明i的值在后面程序中会被改变
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
改变P1.0端口输出,从0到1或从1到0
i = 50000; // Delay
do (i–);
while (i != 0);
软件延时50000个时钟周期(不精确)。
}

MSP430端口寄存器说明
对于MSP430x2系列,每组端口有9个(P1和P2)或6个寄存器。P1和P2端口支持中断,比其他端口多3个中断相关寄存器。常用的寄存器有四个,PxDIR,PxOUT,PxIN和PxREN,分别控制端口的方向(输出端口或输入端口),输出值,输入值和上拉/下拉电阻使能。寄存器和端口状态如下表(可在MSP430x5xx Family User’s Guide中找到,MSP430x2xx Family User’s Guide中没有这个总结表,但有对应寄存器说明)

【本篇完】

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据