[MSP430] 1.第一个工程

发布者:陈熙琼最新更新时间:2020-03-10 来源: eefocus关键字:MSP430  第一个工程  CCS  集成开发环境 手机看文章 扫描二维码
随时随地手机看文章

在这一部分中,我们将介绍CCS集成开发环境的一些基本使用方法,并试着编写一个简单的小程序,实现按键打开LED灯的功能。

TI 的 Launchpad 板本身是完整的 MSP430 开发环境,我们所需要做的仅仅是下载安装CCS 集成开发环境(也可以用IAR 等开发环境,这里我们选用CCS),用 Mini-USB 线把MSP430 连接到电脑,你就可以开始编写代码了。


现在我们就试着在 CCS 中新建一个新的工程。我们将写一个简单的小程序,实现按键打开LED 灯的功能。 


1. 新建 CCS workspace 

打开 CCS,选择 workspace 路径,通常只需要第一次设置为默认。注意,路径中不要使用中文。 

2.创建一个CCS工程 

File > New > CCS Project


Project 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

}

关键字:MSP430  第一个工程  CCS  集成开发环境 引用地址:[MSP430] 1.第一个工程

上一篇:[MSP430] 2.中断和计时器
下一篇:MSP430F149单片机实现uart数据接收中断

推荐阅读最新更新时间:2024-11-12 11:12

MSP430定时器介绍
1.定时器参数 1.1 基本定时器 typedef enum { TIMER_A0 , TIMER_A1 , TIMER_A2 , TIMER_B0 , TIMER_NUM , }TIMERn; //定时器模块 1.2 定时器通道引脚、时钟选择 const GPIO_PIN TIMER_CHANEL_PIN = {// CH0 CH1 CH2 CH3 CH4 CH5 CH6 {{P1,1},{P1,2},{P1,3},{P1,4},{P1,5}}, //TIMER_A0 {{P1,7},{P2,0},{P2,1}}
[单片机]
<font color='red'>MSP430</font>定时器介绍
MSP430F249----UART
//****************************************************************************** // MSP430x24x Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK // // Description: Echo a received character, RX ISR used. Normal mode is LPM0. // USCI_A0 RX interrupt triggers TX Echo. // Baud rate divider with 1MHz = 1MHz/9600 = ~104.2
[单片机]
基于uC/OS-II和MSP430单片机的RTOS的技术分析
  单片机作为嵌入式信息产品的一个重要应用方面,其使用、设计面临着全新的挑战。一方面,人们对嵌入式产品的要求越来越高,稳定可靠、功能丰富、物美价廉的信息产品将成为人们的首选。另一方面,随着微电子工艺水平的发展,单片机处理器的能力不断提高,从最初的8位单片机到16位,进而32位单片机,功能越来越强大,执行速度越来越快,集成度、精确度也越来越高,应用领域进一步拓宽。可以说,单片机芯片的性能已经能够满足现代人们对嵌入式信息产品的更高要求。为了能将二者有效地结合起来,嵌入式RTOS的软件设计方法也取代了以前的前后台(超循环)设计方法,越来越受到重视和应用。   正如分时操作系统中Linux的出现打破了Windows一统天下的局面一样,
[单片机]
基于uC/OS-II和<font color='red'>MSP430</font>单片机的RTOS的技术分析
MSP430 延时总结
*****************************************软件延时************************************/ # define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) /*****************************************************************
[单片机]
基于MSP430G2553的模拟风扇控制系统
本次设计是通过CCS和AD15设计的一个模拟风扇控制系统,该系统主要包括独立键盘电路模块、直流稳压电路模块、程序下载电路模块、数码管显示模块、三极管LED驱动模块、电机驱动电路模块。本次设计方MSP430G2553为控制核心,合理应用该单片机的资源,以最好的方式实现本设计,并且达到了设计要求中的各项指标。 话不多说,直接上代码: 该代码纯属个人编写,仅供参考,小白一个,哈哈哈哈。当然有好多东西没有封装成函数。 下面展示一些 内联代码片。 // A code block 主函数 // An highlighted block #include msp430.h #include stdint.h #inclu
[单片机]
MSP430G2553(一)IO外部中断说明
这一篇文章将说明MSP430G2553的IO中断配置,整个P1的IO都可以配置IO中断,但中断处理函数只有一个,MSP430和大多数MCU一样提供上升沿、下降沿选择。 在Launchpad上有按键S2,接在P1.3口,当按下后P1.3将接入高电平,从而触发中断。 所有寄存器的具体名称和地址,可以查看M430G2553 datasheet 第 21页中对于P1的寄存器定义 在实例代码中,配置了P1.3和P1.6的LED灯,当按下P1.3的按键产生中断,LED灯将切换点亮 1.按键的中断配置 要配置按键中断,需要先设置P1.3口为输入,并且设置上拉电阻以保障稳定性, P1DIR &= ~BIT3;//设置P1.
[单片机]
基于MSP430 单片机的光电跟踪伺服系统的研究方案
  研究设计中利用光敏感器件对特定光波长范围的光信号敏感原理,将四象限光电位置探测器与MSP430系列单片机相结合,根据四象限光电探测器输出电压与光斑位置的线性关系,通过数字PID闭环控制输出电压调节单片机输出PWM 的占空比来实现精确稳定的搜寻和小范围跟踪目标。   0 引言   光电跟踪系统是以光电器件(主要是激光器和光电探测器)为基石,将光学技术、电子/微电子技术和精密机械技术等融为一体,形成具有特定跟踪功能的装置。   目前国内外较先进的光电跟踪系统多以激光测距仪、电视跟踪仪和红外跟踪仪三位一体为核心构成。采用机械方法实现跟踪系统控制起来还不太灵敏。对于一个光电追踪系统,一般通过目标识别、位置信号检测、位置信号处理、
[单片机]
基于<font color='red'>MSP430</font> 单片机的光电跟踪伺服系统的研究方案
基于MSP430单片机的CPU卡模板程序(五)
;************************************** 1.;用户卡下电 ;************************************** CARDDOWN://卡下电 bis.b#icpower,&pdira BIC.B#ICRST,&POUTA NOP NOP bic.b#icio,&pdira BIS.B#ICPOWER,&POUTA RET ;************************************** 2.;SAM模块下电 ;************************************** SAMDO
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved