为了能让学习更有动力并且坚持下去,突然想到可以用博客的形式来记录自己的学习历程,一方面是基于上述原因并且可以留下笔记来方便日后查看,另一方面感觉写出来一些东西可以让学习更加具有逻辑性,今天就让我们点亮EXP430的第一个小灯!
一、环境搭建
1.1 软件下载
本人使用CCS作为开发工具,当然使用IAR也可以。如何安装可以参考软件小口袋公众号。
1.2 环境配置(创建新工程)
(1)首先打开CCSv5并确定工作区间,然后选择“File→New→CCS Project”命令,弹出如图1.2.1所示的对话框。
(2)在“Project name”中输入新建工程的名称,在此输入gpio。
(3)在“Output type”中有两个选项:Executable和Static library。前者为构建一个完整的可执行程序,后者为静态库。在此保留Executable。
(4)在“Device”部分选择器件的型号:在“Family”中选择MSP430;“Variant”中选择MSP430x5xx Family,芯片选择MSP430F5529;“Connection”保持默认。
(5)选择空工程,然后单击“Finish”按钮完成新工程的创建。
(6)创建的工程将显示在“Project Explorer”对话框中,如图1.2.2所示。
1.3 调试工程
(1)首先将所需调试工程进行编译:选择“Project→Build Project”命令,编译目标工程。若编译没有错误产生,可以进行下载调试;如果程序有错误,将会在Problems窗口显示。读者要针对显示的错误修改程序,并重新编译,直到无错误提示。
(2)单击绿色的Debug按钮,进行下载调试,得到如图1.3.2所示的界面。
注意:每接触一个新的IDE,一定要学习一下基本的操作规则,因为以前用过很多种开发工具,就有点眼高手低,结果导致一个小小的地方卡了好久好久,所以推荐到b站上学习个半小时再上手,事半功倍!
二、GPIO模块
每次拿到一个新的板子,总是迫不及待去点亮小灯,总感觉当小灯亮起来的时候这个板子就十拿九稳了哈哈哈哈哈。
2.1 GPIO概述
GPIO (General Purpose I/O),通用输入输出端口。
2.1.1 应用
GPIO基本都是用于芯片与片外器件或设备的交互。
- 检测数字输入,如键盘或开关信号;
- 驱动LED,蜂鸣器或LCD等其他指示器;
- 控制片外器件,较高级的使用可以用它们(通过程序)模拟很多器件的时序达到控制相应器件的目的,比如模拟SPI和模拟总线等。
2.1.2 寄存器概述
GPIO口都是按组规划,MSP430一般是8个GPIO口一组。一般每个GPIO口都需要做两个寄存器位:一是选择口线方向(输入输出)二是需要一个数据位(用于设置输出数据和读取输入数据)。所以一组GPIO口至少会有两个寄存器GPIOxDIR和GPIOxDATA(PxOUT或PxIN)。端口类型见表2.1.1。
PxDIR 输入/输出方向寄存器: P1DIR = 0x01; // 设置P1端口P1.0引脚为输出方向。
PxIN 输入寄存器:这个寄存器是只读的,其中的每一位都反映了其对应的I/O引脚的输入信号(引脚配置为通用I/O)。
PxOUT 输出寄存器:可读可写,将需要的值写入该寄存器,控制输出引脚的电平状态。
2.2 点亮小灯
因为手头没有电阻和小灯,就点亮板子上的由端口P1.0控制的小灯。
#include <msp430.h>
int main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW+WDTHOLD; // Stop WDT
P1DIR |= BIT0; // P1.0 set as output
while(1) // continuous loop
{
P1OUT ^= BIT0; // XOR P1.0
for(i=50000;i>0;i--); // Delay
}
}
下一篇将进阶使用中断来控制小灯。
注意:F5529和之前学的板子有一点区别,这块板子每个端口是以P1.1、P1.2这样的形式存在,不像之前学的是以P1、P2或者PTA1、PTB1这样。