历史上的今天
返回首页

历史上的今天

今天是:2025年03月10日(星期一)

正在发生

2020年03月10日 | [MSP430] 1.第一个工程

2020-03-10 来源:eefocus

在这一部分中,我们将介绍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

}

推荐阅读

史海拾趣

Aydin Corp公司的发展小趣事

随着电子技术的快速发展,Aydin Corp意识到只有不断创新才能在市场中立于不败之地。公司投入大量资源用于研发,不断推出具有创新性和竞争力的产品。这些产品不仅性能卓越,而且设计独特,迅速赢得了消费者的青睐。同时,Aydin Corp还注重产品升级和迭代,以满足市场不断变化的需求。

Arco Electronics公司的发展小趣事

近年来,电子行业面临着技术更新换代快、市场竞争激烈等挑战。Arco Electronics公司敏锐地捕捉到了这些变化,及时调整了公司的战略方向。公司加大了对新兴技术的研发投入,如物联网、人工智能等领域,以保持技术上的领先地位。同时,公司还通过优化生产流程、提高产品质量等方式来降低成本,增强市场竞争力。

ERP公司的发展小趣事

在21世纪初,一家名为“电子智链”的ERP公司在中国电子行业崭露头角。创始人李明是一位资深电子工程师,他意识到电子企业面临的管理挑战和数字化转型的机遇。电子智链初期专注于为中小型电子企业提供定制化的ERP解决方案,帮助企业优化供应链管理、生产计划和财务管理。通过不断创新和积累客户反馈,电子智链逐渐在电子行业树立了良好的口碑。

Goldstar Electron Co Ltd公司的发展小趣事

进入21世纪20年代,电子智链紧跟智能化浪潮,将人工智能(AI)技术引入ERP系统。公司推出了“智链AI”解决方案,通过机器学习算法自动优化生产流程、预测市场需求和降低库存成本。这一创新使得电子智链在竞争激烈的ERP市场中脱颖而出,成为了电子行业数字化转型的领军企业。

Alpha (Taiwan)公司的发展小趣事

随着数字化时代的到来,Alpha (Taiwan)公司紧跟时代步伐,积极推动数字化转型。公司引进先进的数字化设备和技术,对生产线进行智能化改造,提高了生产效率和产品质量。同时,公司还加强了对大数据、云计算等技术的应用,实现了对市场需求、客户反馈等信息的实时分析和处理。这些数字化转型的举措,不仅提升了公司的竞争力,也为公司的未来发展奠定了坚实的基础。

请注意,这些故事是基于一般情况和行业趋势构建的,并非Alpha (Taiwan)公司的实际经历。要了解Alpha (Taiwan)公司的真实发展故事,建议查阅相关公司的官方资料、新闻报道或行业分析报告。

诚润电子(CHEVRON)公司的发展小趣事

随着公司业务的不断发展,诚润电子开始积极拓展海外市场。他们通过参加国际展会、与海外客户建立合作关系等方式,逐渐将产品推向全球。在这个过程中,诚润电子不仅提升了自身的品牌知名度,还积累了丰富的国际市场经验。如今,诚润电子的产品已经出口到多个国家和地区,成为了全球电子保护元件领域的重要供应商之一。

问答坊 | AI 解惑

请问有没有朋友用过PHY芯片

我现在正在调试的系统中用到了RTL8212,是一块千兆双口物理层收发器。现在他能够正常接收数据,但是却不能发送数据,发出的数据在接收方说是错误的数据包。我是用一块FPGA来控制的,现在不知道问题出在哪里,不知道是我的FPGA时序不对还是RTL8212的 ...…

查看全部问答>

华为经典UNIX 教程

目  录 第1章 UNIX操作系统概述 6 1.1 UNIX操作系统简介 6 1.2 UNIX系统组成 6 1.3 与UNIX有关的几个名词 7 第2章 UNIX常用操作 9 2.1 启动终端 9 2.2 登录 9 2.3 UNIX命令 9 2.4 注销(退出UNIX系统) 13 第3章 UNIX文件系统 ...…

查看全部问答>

申请一下,用于电子负载

以前用的是C8051F的,想改成MO。申请一下!!谢谢…

查看全部问答>

silverlight for embedded的环境搭建

请问有没有人知道啊 谢谢了…

查看全部问答>

高分问linux串口发送问题

arm+linux平台 通过 串口发送 数据 write完以后 必须sleep()发送才能成功 否则,发送的就在中间某位产生错误码,数据长的时候,总是在中间顿一下,然后发后半部分,前半部分的最后一个字节就错掉了 这是怎么回事? 太怪了 高手帮忙分析吧 …

查看全部问答>

STC单片机A/D转换程序问题

我用stc12c5608AD自带的AD做一个AD转换的程序 具体的代码如下 void ad_cov() { P1M0=P1M0||0x20; P1M1=P1M1||0x20; //选择P1.5为开漏。(做A/D使用时选择的模式) ADC_CONTR=0xc5; //540个时钟周期转换一次;ADC_FLAG=0;ADC_START=0(设置为1 ...…

查看全部问答>

自己做了板,触摸屏没反应

   自己仿着S3C2410a的开发板,根据需要自己做了一个底板(插在上面的核心板没做),画了PCB,只用了电源,串口和液晶屏(其它的没画),做好板之后又焊上器件,当把原来的核心板(系统在flash里)插在我做的板子上时,液晶可以正常开启,但是触摸时只 ...…

查看全部问答>

Vista是否支持WDM驱动?

Vista是否支持WDM驱动?还是说会出一个新的架构?…

查看全部问答>

推荐个光电式转速传感器

帮忙选一个转速传感器,要输出计数脉冲的,工作电压最好是5v的,万分感谢!!应该是从光电式传感器中选吧,一般的就行,没哟特殊要求,转速几十转每分…

查看全部问答>

迎接TI杯电赛的一组LaunchPad培训作业照片

2012TI杯电赛早已结束。手机里尚有一些培训时拍的照片,主要布置学生完成的LaunchPad作业。…

查看全部问答>