[MSP430] 1.第一个工程
2014-03-01 16:34
483 查看
在这一部分中,我们将介绍CCS集成开发环境的一些基本使用方法,并试着编写一个简单的小程序,实现按键打开LED灯的功能。
TI 的 Launchpad 板本身是完整的 MSP430 开发环境,我们所需要做的仅仅是下载安装CCS 集成开发环境(也可以用IAR 等开发环境,这里我们选用CCS),用 Mini-USB 线把MSP430 连接到电脑,你就可以开始编写代码了。
现在我们就试着在 CCS 中新建一个新的工程。我们将写一个简单的小程序,实现按键打开LED 灯的功能。
Project name: ButtonLED
Device>Family: MSP430
Variant: MSP430G2553
Project templates and examples : Empty Project(with main.c)
Finish!
这个头文件包含了 MSP430G2553 的寄存器定义和内置函数,如果你使用的是其他型号的芯片,例如 MSP430G2231,你需要包含的头文件便是"msp430g2231.h" 。
接着,是主函数部分。
这仅仅是一个初始化过程,我们还没有写有关开关 LED 灯的代码。
P1REN |= BIT3 为P1.3配置了上拉电阻
P1IES |= BIT3 配置P1.3为下降沿有效
P1IFG &= ~BIT3 清除P1.3的中断标志位
P1IE |= BIT3 P1.3中断使能
这一行是一个内置函数,它打开的所有中断功能。
这是PORT1的中断处理函数,每当P1.3引脚从高电平变为低 电平时(Launchpad上的按键是低电平有效的,这也是为什么配置 时是下降沿有效触发中断),中断处理函数便会被调用。
这一行用来清除中断标志位,从而下次触发中断依然有效。
如果一切顺利的话,现在我们可以把我们的程序下载到单片机 运行了。
这个是编译按钮,如果编译顺利通过的话就可以下载到单片机了。
这个是 Debug 按钮,编译通过之后,我们按这个按钮进入 DEBUG 模式。
按红色按钮终止 DEBUG 模式。
至此,我们的开关 LED 程序已经下载到单片机中,如果你观察到红色的 LED 灯会随着按键亮灭,那么恭喜你,你已经完成了第一 个 MSP430的项目。
这是 DEBUG 模式的界面状态,我们可以单步调试程序以观察没运行一步单 片机以及每一个寄存器、每一个变量的状态,以调试程序,检查错误等。
以下是这一节的完整代码:
TI 的 Launchpad 板本身是完整的 MSP430 开发环境,我们所需要做的仅仅是下载安装CCS 集成开发环境(也可以用IAR 等开发环境,这里我们选用CCS),用 Mini-USB 线把MSP430 连接到电脑,你就可以开始编写代码了。
现在我们就试着在 CCS 中新建一个新的工程。我们将写一个简单的小程序,实现按键打开LED 灯的功能。
1. 新建 CCS workspace
打开 CCS,选择 workspace 路径,通常只需要第一次设置为默认。注意,路径中不要使用中文。2.创建一个CCS工程
File > New > CCS ProjectProject name: ButtonLED
Device>Family: MSP430
Variant: MSP430G2553
Project templates and examples : Empty Project(with main.c)
Finish!
3.可以编写自己的程序了!
我们的第一行代码:#include "msp430g2553.h" //Contains definitions for registers and built-in functions
这个头文件包含了 MSP430G2553 的寄存器定义和内置函数,如果你使用的是其他型号的芯片,例如 MSP430G2231,你需要包含的头文件便是"msp430g2231.h" 。
接着,是主函数部分。
void main(void)// Main program { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR |= BIT0; // Set P1.0 to output direction P1OUT &= ~BIT0; // set P1.0 to Off P1REN |= BIT3; // P1.3 Pull up Enabled P1IES |= BIT3; // P1.3 Interrupt at Falling Edge P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear P1IE |= BIT3; // P1.3 interrupt Enabled _EINT(); // Enable all interrupts while(1) //Loop forever, we'll do our job in the interrupt routine... {}
这仅仅是一个初始化过程,我们还没有写有关开关 LED 灯的代码。
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer这一行中,我们关闭了看门狗计时器——它的主要功能是在单片机运行了一段时间后重置单片机,以防止程序陷入无限死循环。在大多数例程中,你会发现在初始化过程中都会关闭看门狗,以避免不必要的重置。
P1DIR |= BIT0; // Set P1.0 to output direction这一行中,我们将 P1.0 引脚设置为输出(P1.0 与单片机上 Led1 相连)。在 MSP430 中,P1DIR 是一个控制 Port1 引脚方 向的八位寄存器。如果你把某一位配置为 0,则它作输入用,反之 是输出。BIT0 是一个系统定义的常量,即 0x01。
P1OUT &= ~BIT0; // set P1.0 to Off这一行中,我们将 P1.0 引脚默认输出配置为低,这样在系统 上电的时候 LED 灯一定是灭的。P1OUT 寄存器控制着 PORT1 上 所有配置为输出的引脚,如果你把对应位配置为 1(通过将 P1OUT 与上对应的常数如 BIT0,BIT1 等),那么对应位的输出 就是高电平,反之输出低电平。
P1REN |= BIT3; // P1.3 Pull up Enabled P1IES |= BIT3; // P1.3 Interrupt at Falling Edge P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear P1IE |= BIT3; // P1.3 interrupt Enabled这几行中,我们配置了 P1.3 的中断功能,其中 P1.3 与板上的 S2 按键相连。什么是中断?我们希望单片机知道我们什么时候按下 了按键,无论单片机当前所执行的任务是什么,这就需要使用中断 功能。中断的具体内容后面会详细介绍,这里只简述上面所执行的内容:
P1REN |= BIT3 为P1.3配置了上拉电阻
P1IES |= BIT3 配置P1.3为下降沿有效
P1IFG &= ~BIT3 清除P1.3的中断标志位
P1IE |= BIT3 P1.3中断使能
_EINT(); // Enable all interrupts
这一行是一个内置函数,它打开的所有中断功能。
while(1) //Loop forever, we'll do our job in the interrupt routine... {}在进行完简单的配置后,我们终于进入了循环。注意到这是一个无限空循环,接下来的开关灯的工作就全交给中断函数了。
#pragma vector=PORT1_VECTOR __interrupt void Port_1(void) { P1OUT ^= BIT0; //Toggle P1.0 P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear }
这是PORT1的中断处理函数,每当P1.3引脚从高电平变为低 电平时(Launchpad上的按键是低电平有效的,这也是为什么配置 时是下降沿有效触发中断),中断处理函数便会被调用。
P1OUT ^= BIT0; //Toggle P1.0这一行用异或操作翻转 LED 灯的状态。
P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear
这一行用来清除中断标志位,从而下次触发中断依然有效。
如果一切顺利的话,现在我们可以把我们的程序下载到单片机 运行了。
4.将程序下载到单片机
这个是编译按钮,如果编译顺利通过的话就可以下载到单片机了。
这个是 Debug 按钮,编译通过之后,我们按这个按钮进入 DEBUG 模式。
按红色按钮终止 DEBUG 模式。
至此,我们的开关 LED 程序已经下载到单片机中,如果你观察到红色的 LED 灯会随着按键亮灭,那么恭喜你,你已经完成了第一 个 MSP430的项目。
这是 DEBUG 模式的界面状态,我们可以单步调试程序以观察没运行一步单 片机以及每一个寄存器、每一个变量的状态,以调试程序,检查错误等。
以下是这一节的完整代码:
#include "msp430g2553.h" //Contains definitions for registers and built-in functions
void main(void)// Main program {
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR |= BIT0; // Set P1.0 to output direction
P1OUT &= ~BIT0; // set P1.0 to Off
P1REN |= BIT3; // P1.3 Pull up Enabled
P1IES |= BIT3; // P1.3 Interrupt at Falling Edge
P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear
P1IE |= BIT3; // P1.3 interrupt Enabled
_EINT(); // Enable all interrupts
while(1) //Loop forever, we'll do our job in the interrupt routine... {}
}
#pragma vector=PORT1_VECTOR __interrupt void Port_1(void){
P1OUT ^= BIT0; //Toggle P1.0
P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear
}

相关文章推荐
- 修改IAR for msp430工程名方法
- MSP430应用技巧4:创建MSP430Ware工程项目的方法
- Android工程中R.java文件的重新生成——注意资源文件的错误
- FLEX 用EA反向工程时,消除中文注释的乱码解决方法
- xcode4的workspace里各lib工程与app工程联编之runscript简介
- 如何给Visual Studio的Win32 工程添加Version信息(how to add version information of win32 project)
- AndroidStudio创建一个新的工程
- eclipse中新建jni工程
- 从0开始创建FX3工程之五 - SPI
- 风景园林景观工程专项设计资质申请规则流程标准
- 【转】u-boot工程结构和u-boot操作概述(2010.09)
- 旧工程适配iOS6和iPhone5的一些故事
- HDU 1232 畅通工程(纯并查集)
- xcode工程命令行生成ipa安装包
- 第八届河南省赛 zzuoj 10409: D.引水工程 (最小生成树)
- Opencv实现盲水印技术(二)——使用maven构建Java Web工程
- Android工程和类库之间的转换
- Spring Boot(3)— Spring Boot工程结构推荐
- 用Eclipse CDT + CMake构建跨平台工程(VC/GCC)
- MyEclipse9 Maven开发Web工程 详细配置