手把手教你使用TI MSP430 LaunchPad
LaunchPad使用说明
CCS5.1的详细安装步骤参考CCS5.1User`s guide for MSP430.pdf,现在有破解版的CCS5.1。
Code Composer Studio (CCS5.1)
Workspace
Project 1
Project 2 Project 3 Settings and preferences
USI with I2C and SPI support USCI with I2C, SPI and UART support Inverting and non-inverting inputs Selectable RC output filter Output to Timer_A2 capture input Interrupt capability
GPIO Code Example
P1DIR |= BIT0; //设置 P1.0为输出 P1OUT |= BIT0; //P1.0 输出高电平
For GPIO 中断相关寄存器
详细的参考MSP430x2xxFamily user guide.pdf
主要内容
LaunchPad实验板介绍
开发环境介绍
LaunchPad的应用
演示LaunchPad的电容触摸板
详细参考:430BOOST-SENSE1.pdf
LaunchPad应用1
• 基于心电图的心率监测仪(EKG-Based Heart-Rate Monitor Implementation on the LaunchPad Using the MSP430G2452MCU)
Link
Project Project Project Source files
Link
launchpad说明
玩Launchpad必然少了编译环境,什么编译软件适合初学者呢?在我个人认为,也是众多友友的想法,CCS(Code Composer Studio)不及IAR(IAR Embedded Workbench IDE )使用方便,但CCS作为TI DSP的官方软件,其功能确实很强大!各取所长,下面就详细说下用IAR 为Launchpad开发C语言吧!操作系统:Windows 7开发环境:IAR FOR MSP430 V5.30.1第一步:驱动安装IAR FOR MSP430 V5.30.1软件已集成Launchpad驱动,安装好IAR再将Launchpad与电脑箱连接,等待驱动安装完毕就可以了,一般成功安装是没问题的!如果不成功,检查下电脑与板子连接是否完好。
IAR FOR MSP430 V5.30.1下载地址在下面附上。
下载网址:要先登录115网盘,没有的一下子就可以注册的,然后点存至网盘,在自己网盘就可以下载了!/file/anodidvs加个百度网盘下载地址:/share/link?shareid=32705&uk=503898939第二步:建立工程废话不多说,双击软件图标2012-8-22 23:29 上传下载附件(4.38 KB)打开工程,点击工具栏上方的File-New-Workspace,新建工作组,再点击工具栏Project-Creat New Project,转到如图,下载附件(44.98 KB)接着点击如图所示,2012-8-22 22:51 上传下载附件(28.69 KB)接着会提示你保存工程文件,存在事先建好的文件夹内.下载附件(59.97 KB)选择 C - main,这里也可以选择Empty project,但选择 C -main的话,它会自己帮你新建一个main.c文件,并且把它加入到工程中。
给指定一个文件,并且把它加入到工程中。
给指定的工程名称msp430中。
LaunchPad-MSP430入门系列4-定时器模块(定时、计数、捕获)
LaunchPad-MSP430入门系列4-定时器模块(定时、计数、捕获)Version 1.2文先,介绍几个英文缩写的意思以及一些注意的地方。
1.Timer0/1 定时器0/1,在User's Guide中用的是TimerA/B,所指的也是Timer0/1 。
G2553Datasheet中用的是Timer0/1 ,本文以G2553Datasheet为准。
全文以Timer0为例,Timer1类同。
2.TAxR(x = 0/1)定时器x对应的计数器,这是一个只读寄存器。
硬件自动驱动计数。
3.EQUy(y = 0/1/2)计数事件发生寄存器,当TAxR = TAxCCRy时EQUy置1。
4.定时器简介MSPG2553共有两个定时器,Timer0、Timer1,他们都是十六位的定时、计数器,内含三个捕获、比较寄存器。
两个定时器均支持多个捕获、PWM输出、间歇性计时,定时器包含多个中断源,可以是计数溢出中断、捕获中断等等。
定时器包含:●同步十六位定时、计数器运行模式。
●时钟源可从MCLK、SMCLK、ACLK任意选择。
●三个比较、捕获寄存器。
●中断向量寄存器能快速解码的所有定时器中断本文以Timer0为例详细介绍430的定时器模块,下图是Timer0组成框图0-1定时器0组成框图下面简要介绍一下该硬件框图的意思,从左上角看,首先是一个时钟源选择寄存器TASSELx,通过该寄存器选择定时器的时钟源,选择了时钟源后有一个分频器Divider,相应的设置寄存器是IDx,再过来就到一个定时器的核心部分,一个16位的定时器TAR。
其右侧有一个定时器的计数模块,MCx寄存器用来设置计数模式。
接下来,TAR正下方有三个横线,右侧标有CCR0、CCR1、CCR2,意思是CCR1、CCR0的框图和下方CCR2的框图是一样的。
此处省略不写。
在CCR中,左上角为一个捕获源选择寄存器。
可以从CCI2A、CCI2B、GND或者VCC选择捕获源,选择捕获源后有一个选择捕获模式寄存器Capture Mode,然后过来有一个捕获溢出状态寄存器COV,SCS同步/异步捕获模式选择位,然后连接到捕获比较寄存器。
【Energia开发环境】MSP430 LAUNCHPAD学习笔记5--串口
【Energia开发环境】MSP430LAUNCHPAD学习笔记5--串口(Serial UART)串口通信能够实现开发板与PC的相互传输数据,常用于开发板的调试,输出调试信息,直观的观察开发板运行的状况。
对于MSP430G2553的串口,需要注意的是由于LAUNCHPAD的版本不同,有1.4和1.5两个版本,如上图。
1.5版本的LAUNCHPAD可以在调试时直接使用硬件UART与电脑通信。
这次实验所使用的芯片型号为G2553,在包装和里也有G2452的芯片,所以要看清楚你所使用的是哪个芯片。
如果你手上正好有一块G25531.5版本的LAUNCHPAD,那就方便多了。
LAUNCHPAD板子上的仿真器串口最大通信速率为9600baud,我们在写程序的时候最好不要超过这个数值。
我们先来做个简单的串口实验:编写完程序后,连上板子,查看软件是否已正常连接开发板,然后下载程序。
常用函数:Serial.begin(speed):这个函数是对波特率的设定,常有的波特率有300,600,1200,2400, 4800,9600,14400,19200,28800,38400,57600,11520这些。
这里使用是9600baud。
print(val):在串口发送数据的时候,会将其转换为人类可阅读的ASCII字符。
∙Serial.print(78)输出"78"∙Serial.print(1.23456)输出"1.23"∙Serial.print('N')输出"N"∙Serial.print("Hello world.")输出"Hello world."也可以在print(val,format)中加入第二个参数,如:∙Serial.print(78,BIN)输出"1001110"∙Serial.print(78,OCT)输出"116"∙Serial.print(78,DEC)输出"78"∙Serial.print(78,HEX)输出"4E"∙Serial.println(1.23456,0)输出"1"∙Serial.println(1.23456,2)输出"1.23"∙Serial.println(1.23456,4)输出"1.2346"Serial.println(val,format)是print(val,)的加强版,只是在print生成的字符串后面加一个”\n”作为换行符。
MSP-EXP430G2开发板使用简单介绍
(4)、中断的嵌套:
当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)
实现中断嵌套需要注意以下几点: 1)430默认的是关闭中断嵌套的,一定要中断嵌套的话,就必须在中断服务程序中打开 总中断 msp430的指令中,_DINT()和_EINT()分别指关和开总中断。 2)当进入中断服务程序时,只要不在中断服务程序中再次开中断,则总中断是关闭的, 此时来中断不管是比当前中断的优先级高还是低都不执行; 3)若在中断服务程序A中开了总中断,则可以响应后来的中断B(不管B的优先级比A高 还是低),B执行完再继续执行A。注意:进入中断服务程序B后总中断同样也会关闭, 如 果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用 开中断,B执行完后跳出中断程序进入A程序时,总中断会自动打开; 4)若在中断服务程序中开了总中断,后来的中断同时有多个,则会按优先级来执行,即 中断优先级只有在多个中断同时到来时才起做用!中断服务不执行抢先原则。 5)对于单源中断,只要响应中断,系统硬件自动清中断标志位,对于TA/TB定时器的比较/捕 获中断,只要访问TAIV/TBIV,标志位倍被自动清除; 对于多源中断要手动清标志位,比如P1/P2口中断,要手工清除相应的标志,如果在这种中 断用"EINT();"开中断,而在打开中断前没有清标志,就会 有相同的中断不断嵌入,而导致 堆栈溢出引起复位,所以在这类中断中必须先清标志再打开中断开关.
Clock
FLASH
... JTAG/Debug
RAM
MAB 16
RISC CPU 16-bit
MDB 16
...
ACLK SMCLK
Digital Peripheral
Analog Peripheral
MSP-EXP430G2 LacunchPad口袋实验平台用户手册
4.11 I2C 扩展 IO .................................................................................. 31 4.12 LCD 显示自检 ............................................................................. 34 4.13 拨盘电位器 .................................................................................. 36 4.14 温度传感器采样及显示.............................................................. 38 4.15 SPWM 波形合成及采样 .............................................................. 40 4.16 任意波形发生器 AWG ............................................................... 43 4.17 基于 AWG 的音频播放器 .......................................................... 45 4.18 自校验 DCO ................................................................................ 47
1
口袋实验平台可以不借助其它测试仪器实现对单片机的内 部资源和外设的学习和实验。三个综合实验的录像中,使用了 部分仪器来丰富实验效果。 1) 在例程“20_Sin_Gen_and_Sample ”中可以使用示波器 观测 PWM 滤波波形,也可以利用仿真器间接观测波 形。 2) 例程 “21_1_DAC_AWG” 中使用了示波器,如无示波 器,可用例程“21_2_TF_Audio”替代学习 DAC 的使 用。 3) 例程“22_DCO_Calb_Test”录像中示波器和频率计的使 用是为了验证自校验 DCO 频率的精度,利用单片机 自制的频率计一样能满足要求,可自行编程实现频率 计功能。
手把手教你使用Grace开发LaunchPad
手把手教你使用Grace开发LaunchPad开发环境:Code Composer Studio v4.2操作系统:Windows XP SP3 32bit开发板:TI LaunchPadGrace是TI推出的图形外设配置工具,用于加速用户对MSP430的使用开发,下面简单介绍下如何使用Grace对LaunchPad的开发。
1、安装CCS 和Grace,这两个软件可以到TI的官网里下载到,/。
建议使用页面右上角的检索工具,找资料那些挺方便的:附:CCS下载地址:/tool/cn/ccstudioGrace下载地址:/tool/cn/grace2、安装完成之后,启动Code Composer Studio v4,第一次使用,会提示Select a workspace,这个根据自己需要选择合适目录作为工作路径。
3、由于前面安装了Grace,CCS会提示安装插件Add Discovered Extensions,选中后点击Finish,CCS会提示需要重启动。
4、CCS重启动之后,就看以看到CCS v4的华丽界面了。
至于弹出来的注册界面,注册方法已是公开的秘密,据说那个Crack是对CCS v4.1版及后续版本都支持的。
把CCS的欢迎界面Welcome最大化,我们可以通过这个欢迎界面,来找到需要的资料。
我这里安装的仅仅是对MSP430的支持,所以页面内容都是MSP430相关的。
点击Examples:在弹出来的页面里点击MSP430 Code Examples:点击之后,我们可以看到TI官网上的示例代码页面:再点击我们需要的芯片例程,就可以直接下载到了:是不是方便了很多咧,这个页面也就相当于一个浏览器,在里面我们可以直接链接到TI的官网里,教程、源码等随时可得。
TI给我们提供了极大的便利,用不用,怎么用就因人而异了。
闲着没事的时候,这里点点,那里按按,说不定就有意外的收获。
如果不小心把这个Welcome给关了,我们可以通过以下方式来重新打开:5、回到主题,关于Grace的使用。
MSP430 G2 LaunchPad使用入门
MSP430 G2 LaunchPad使用入门v1.0 2013.8.8xie_sx@目录目录 (1)1 G2 LaunchPad功能简介 (1)1.1 快速入门 (1)1.2 硬件电路 (3)1.3 片上资源 (4)1.4 自学资料 (5)1G2 LaunchPad功能简介1.1快速入门收到MSP430 LaunchPad G2板卡,完整包装盒如下所示:打开盒子,MSP-EXP430G2 套件盒包括下列物品:•MSP-EXP430G2板卡•USB线•两个10 脚单排孔(暂时用不上)•1个32.768kHz 时钟晶振(该晶振不焊接,单片机使用的是内部晶振,建议焊接上)•一张快速启动指南+两个LaunchPad 贴签•两个MSP430 单片机–MSP430G2553:具有8 通道10 位模数转换器(ADC)、片上比较器、触控式使能I/O、通用串行通信接口、16kB 闪存、和512 字节RAM 的低功耗16 位MSP430 微控制器(预加载有示例程序)–MSP430G2452:具有8 通道10 位ADC、片上比较器、触控式I/O、通用串行接口、8kB 闪存、和256 字节SRAM 的低功耗16 位MSP430 微控制器拆开包装,拿出G2板卡,电路板如下图所示:作为入门使用的电路板,在设计入门实验时,我们更多的是借助两个LED灯和一个按键,进行单片机功能模块的学习。
在电脑上安装CCS软件,接着用USB线连接电脑和G2板卡,简单两个步骤就可以开始单片机的实验了。
基本的实验环境搭建好之后,如下图所示。
在宿舍/教室/图书馆等地方,仅需外带一台电脑就可以做实验了。
1.2硬件电路在嵌入式的学习过程中,硬件知识是必不可少的。
对于初学者来说,仿真器部分的具体电路可以跳过,把精力放在单片机核心板卡上。
G2板卡硬件电路较为简单,将所有的IO口引出,并且配有两个LED知识灯+1个用户按键输入。
电源供电部分的电路如下所示,通过电脑的USB口获取5V的电源输入,经稳压芯片稳压后输出3.6V电压给单片机供电。
msp430按键控制
第三讲按键控制一、概述LAUNCH PAD的实验板上共有两个按键,一个按键接至RESET脚,固定作为复位按键来使用(S1)。
按键S2连接在引脚P1.3,可供我们自由使用。
这里我们实现通过此按键控制LED的闪烁。
应当注意,连接按键的引脚松开时为高电平,按下为低电平。
按键一般可以通过扫描和中断来实现。
扫描是指程序通过循环不停地读取IO口的输入值,并以此判断按键是否按下。
中断实现可以免除扫描的麻烦,在按键按下时,中断当前的程序,执行中断处理函数,效率较高。
二、中断简介中断对于初学者来说,是最不容易理解的。
但它的道理实际上很简单,中断条件满足时,暂停正在运行的程序,开始处理中断服务函数,中断服务函数结束后返回,继续从之前停下的地方运行。
就好像是你原来在网上聊天,突然电话响了,接完电话继续上网一样。
这里,上网就像是初始运行的程序,电话响了是中断触发条件,接电话是中断服务程序。
只是设置好中断处理函数以后,每次中断运行的程序都是相同的。
每种CPU之中,都会有许多不同种类的中断。
对于单片机来说,最常用的中断有外部中断、定时器中断等。
而这些中断中,又有不同的优先级,有时还可以实现中断嵌套。
中断优先级是指系统中多个中断源可能同时提出中断请求,需要按中断的轻重缓急给每个中断源指定一个优先级别。
从头文件中,我们可以看到msp430g2553的中断优先级。
如图,最下面的复位中断具有最高优先级。
中断嵌套是指系统为某个中断请求服务时,可能再次接收到其他中断请求信号,这时系统有可能会再次中断,转去处理新的、优先级更高的中断请求。
对于msp430,一般情况下不允许任何中断嵌套,但是,若在中断中打开总中断,则不论优先级高低都会进行中断嵌套。
我们使用在按键这里的中断,被称为外部中断,意思是触发条件是来自外部的。
在程序中,要配置好中断,要考虑到很多方面。
首先,要确定是哪种中断,如外部中断就要配置IO 口的寄存器;其次,编写中断处理函数;最后,也是最重要的部分,打开总中断。
MSP430 launch pad 中文资料2
MSP43微处理器Value Line介绍简介在这部分,我们将全面介绍MSP430 Value Line系列的微处理器。
为了进行练习,我们要下载并安装与之相关的软件及相应的组件——MSP430 LaunchPad。
想要了解更多信息,请打开以下Wiki连接:/index.php/Getting_Started_with_the_MSP 430_LaunchPad_Workshop模块话题Value Line的介绍TI处理器汇总简介MSP430发展路线图Value Line 部分MSP430 CPU内存图Value Line 外设LaunchPad扩展板LEDs and JumpersReset Button 、软件与硬件目的这次训练的目的是为了学会下载和安装代码编辑器,以及其他与MSP430 LaunchPad有关的各种软硬件。
之后我们会再次浏览MSP430 LaunchPad工具箱里的内容以及其提供的教程。
通过操作MSP430G2231,我们会对MSP430 LaunchPad有一个基本了解。
在下一次实验中,我们将更加详细地介绍代码编辑器。
这些开发工具,将会使用在剩下的实验中练习。
步骤注意:如果你有已安装CCSv4.1,请跳跃CCS安装程序。
下载和安装代码 Composer Studio 4.11.点击下面联接被指导CCS下载网站:/index.php/Download_CCS2.当时选择第二下载按键,“下载最新的产生式MSP430/C28x个码有限的图像”,像显示下面:3.这会直接让你到达“my.TI帐户”,你将需要登录(注意你必须有一个TI登录帐户继续进行)。
一旦你同意出口条件你会立即看到e-mailed一个链接安装压缩文件。
点击链接,保存压缩文件到你的桌面。
拉开拉链鱼贯而入一个夹在你的桌面命名Setup CCS的文件。
你可以删除一下压缩文件,安装Setup CCS 当安装完成了。
4.一定要断开任何评估板,你连接了你的四条通用串行总线港口(s)。
LaunchPad(MSP430G2553) 官方例程
// MSP430G2xx2
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// /|\ | |
// --o--|P1.3 P1.0|-->LED
// \|/
//
//******************************************************************************
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//Configure ADC10
ADC10CTL1 = INCH_10 + ADC10DIV_3; // Choose ADC Channel as Temp Sensor
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;//Choose ADC Ref source
// MSP430F20xx Demo - Basic Clock, Output Buffered SMCLK, ACLK and MCLK/10
//
// Description: Buffer ACLK on P2.0, default SMCLK(DCO) on P1.4 and MCLK/10 on
#include <msp430x20x3.h>
unsigned char s;
void main(void)
{
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer
【LaunchPad】学习第一记
MSP430 LaunchPad学习第一记Lyzhangxiang前天收到了SOSO姐的板子,打开来一看板子质量很不错啊,就是不像淘宝上买的那种有光盘资。
只有一张介绍的卡片,看着卡片我心情好是激动想玩玩不了。
上坛子里来看看,原来有——LaunchPad.pdf的资料。
讲解的很详细,虽然是E文的,不过阅读起来还不算是吃力,Ti的东西没话说。
对着着篇文章好好看看,先是下载CCS(当然你可以考虑下载IAR的,不过先前没接触过CCS 所幸这里也是毫无顾忌的选择了他,体会一下新东西嘛,正好430也是第一次玩虽然常常在各种网站上都能见到他的身影)。
想玩430一直是我的一个梦想,用这个词好像有点夸张了,不过的确在淘宝上看到的多是F系列的片子,加上仿真器价格真是不菲,作为学生的我难以接受。
或许这就是一直没能玩上的缘故吧。
这次坛子里的活动第一让我玩到了430,也让我明白了原来430的G系列价格也很便宜甚至比51、PIC还便宜。
16位的东西且不管片上资源的多少,就冲着16位也要去玩下。
记得申请这个板子好几天才收到了SOSO姐的回复(应该是我申请的方式不对,不知道为何发不到申请专栏),那时候我正做着从合肥开往芜湖的火车上(去利尔达面试也拿到了Offer,不知道利尔达怎么样,请知道详情的朋友说下吧),告知了SOSO姐我的地址,哈哈没过几天板子就来了。
当天晚上就下载了很多关于这个板子的资料,多是坛子里面那位热心网友上传的。
首先就是阅读了那个LaunchPad的pdf,然后下载CCS安装完毕,其次看了一下G2211和G2231的数据手册。
大概有个了解之后开始玩了,打开CCS新建工程,关于CCS的操作可以下载那个视频看一下啦,基本对付了。
哦忘了说了还有那个很不错的触摸板子,也有一篇很好的pdf叫——LaunchPad实验板触摸感应子卡使用指南。
原理图以及代码示例里面都有讲解的。
详细的操作我也不说了直接进入主题了,第一次嘛还是跑通Demo 的好,毕竟我是第一次搞430,也不知道代码需要怎样去写。
MSP430 LaunchPad温度检测
MSP-EXP430G2 温度检测实验1.安装MSP-EXP430G2 LaunchPad安装MSP-EXP430G2 LaunchPad包含三个步骤:(1)下载所需软件:通常选IAR或者CCS。
(2)安装选定的IDE:下载一个集成开发环境(IDE),IAR或者CCS,安装(编译部分有详细介绍)。
(3)将LaunchPad连接至PC:将附带USB线缆的EXP430G2 LaunchPad目标板连接至PC。
如果出现提示,要求提供软件,则允许Windows自动安装该软件。
注意,仅当已经安装了IAR KickStart或Code Composer Studio后才能这样做。
2.温度检测程序基于MSP430G2452内置温度传感器的温度检测程序:include "msp430g2452.h”#define LED1 BIT0 //绿灯,BIT0,BIT6之类的是宏定义,请在头文件"msp430g2452.h"中查看#define LED2 BIT6 //红灯,参见MSP-EXP430G2 LaunchPad Experimenter Board User's Guide#define LED_DIR P1DIR#define LED_OUT P1OUT#define BUTTON BIT3 //P1.3为板上按键S2#define BUTTON_OUT P1OUT //端口输出寄存器#define BUTTON_DIR P1DIR //端口方向控制寄存器#define BUTTON_IN P1IN //端口输入寄存器#define BUTTON_IE P1IE //端口中断允许寄存器#define BUTTON_IES P1IES //端口中断触发沿控制寄存器#define BUTTON_IFG P1IFG //端口中断标志寄存器#define BUTTON_REN P1REN //端口上下拉电阻使能控制寄存器#define TXD BIT1 // TXD on P1.1#define RXD BIT2 // RXD on P1.2#define APP_STANDBY_MODE 0 //待机模式标志,也就是接上电源(或USB)后红绿灯交替闪的状态#define APP_APPLICATION_MODE 1 //应用模式标志,也就是待机模式时按按键后进入的状态,也就是测量温度#define TIMER_PWM_MODE 0#define TIMER_UART_MODE 1 //串口模式状态#define TIMER_PWM_PERIOD 2000#define TIMER_PWM_OFFSET 20#define TEMP_SAME 0#define TEMP_HOT 1#define TEMP_COLD 2#define TEMP_THRESHOLD 5// Conditions for 9600/4=2400 Baud SW UART, SMCLK = 1MHz#define Bitime_5 0x05*4 // ~ 0.5 bit length + small adjustment#define Bitime 13*4//0x0D#define UART_UPDATE_INTERVAL 1000 //主循环次数进行一次串口发送温度值unsigned char BitCnt;unsigned char applicationMode = APP_STANDBY_MODE; //功能模式标志,初始值为待机模式unsigned char timerMode = TIMER_PWM_MODE;unsigned char tempMode;unsigned char calibrateUpdate = 0;unsigned char tempPolarity = TEMP_SAME;unsigned int TXByte;/* Using an 8-value moving average filter on sampled ADC values */long tempMeasured[8]; //定义数组以计算8次10位ADC温度采样的平均值unsigned char tempMeasuredPosition=0; //温度测量值数组索引long tempAverage; //8次10位ADC温度采样的平均值long tempCalibrated, tempDifference;void InitializeLeds(void); //IO端口初始化,设置两颗LED对应的端口并两设置为熄灭初始状态void InitializeButton(void); //IO端口初始化,配置按键void PreApplicationMode(void); //进入待机模式,红绿灯交替闪,等待按键 Blinks LED, waits for button pressvoid ConfigureAdcTempSensor(void); //配置温度传感器模数转换void ConfigureTimerPwm(void); //配置定位器为PWM模式void ConfigureTimerUart(void); //配置定时器为Uart模式void Transmit(void); //串口发送子程序void InitializeClocks(void); //初始化时钟系统void main(void){unsigned int uartUpdateTimer = UART_UPDATE_INTERVAL; //主循环次数进行一次串口发送温度值unsigned char i;WDTCTL = WDTPW + WDTHOLD; // 停止看门狗 Stop WDTInitializeClocks(); //初始化时钟系统InitializeButton(); //配置按键InitializeLeds(); //设置端口并两设置两颗LED对应为熄灭初始状态PreApplicationMode(); //进入待机模式,红绿灯交替闪,等待按键 Blinks LEDs, waits for button press//执行PreApplicationMode()将进入低功耗模式,程序停止在此,直到有按键按下/* 进入应用模式 Application Mode begins */applicationMode = APP_APPLICATION_MODE; //功能模式标志变成应用模式ConfigureAdcTempSensor(); //配置温度传感器模数转换ConfigureTimerPwm(); //配置定位器PWM模式__enable_interrupt(); //使能全局中断 Enable interrupts./* Main Application Loop */while(1){ADC10CTL0 |= ENC + ADC10SC; //ADC使能,ADC开始转换一次 Sampling and conversion start__bis_SR_register(CPUOFF + GIE); //进入省电模式LPM0,等待AD转换完成中断 LPM0 with interrupts enabled/* Moving average filter out of 8 values to somewhat stabilize sampled ADC */ tempMeasured[tempMeasuredPosition++] = ADC10MEM; //将温度采样值存入温度值数组下一位if (tempMeasuredPosition == 8)tempMeasuredPosition = 0; //复位温度采样值数组索引tempAverage = 0;for (i = 0; i < 8; i++)tempAverage += tempMeasured[i]; //累加温度采样值数组各值tempAverage >>= 3; //除以8得到平均值 Divide by 8 to get averageif ((--uartUpdateTimer == 0) || calibrateUpdate ) //如果主循环了UART_UPDATE_INTERVAL次或者参考温度按键按过{ConfigureTimerUart();if (calibrateUpdate){TXByte = 248; // A character with high value, outside of temp rangeTransmit(); //串口发送值248表示按键按下进行了校准参考calibrateUpdate = 0; //复位参考温度校准标志变量}TXByte = (unsigned char)( ((tempAverage - 630) * 761) / 1024 ); //计算温度华氏值Transmit(); //串口发送华氏温度值uartUpdateTimer = UART_UPDATE_INTERVAL; //复位循环计数变量ConfigureTimerPwm(); //配置定时器回PWM模式}tempDifference = tempAverage - tempCalibrated; //计算相对于参考温度的差值 if (tempDifference < -TEMP_THRESHOLD) //如果采样温度值低于参考温度值差值TEMP_THRESHOLD{tempDifference = -tempDifference; //差值取正tempPolarity = TEMP_COLD; //极性变量设为值TEMP_COLDLED_OUT &= ~ LED1; //LED1绿灯置灭}elseif (tempDifference > TEMP_THRESHOLD) //如果采样温度值高于参考温度值差值TEMP_THRESHOLD{tempPolarity = TEMP_HOT; //极性变量设为值TEMP_COLDLED_OUT &= ~ LED2; //LED2红灯置灭}else //如果相对于参考温度值偏差没有超过阈值TEMP_THRESHOLD{tempPolarity = TEMP_SAME; //性变量设为值TEMP_SAMETACCTL0 &= ~CCIE; //关TACCTL0中断使能TACCTL1 &= ~CCIE; //关TACCTL1中断使能LED_OUT &= ~(LED1 + LED2); //置两灯皆灭}if (tempPolarity != TEMP_SAME) //如果相对于参考温度值偏差超过阈值TEMP_THRESHOLD{tempDifference <<= 3; //温度偏差值乘以8tempDifference += TIMER_PWM_OFFSET; //加上一个偏置值TACCR1 = ( (tempDifference) < (TIMER_PWM_PERIOD-1) ? (tempDifference) : (TIMER_PWM_PERIOD-1) ); //置TACCR1,最大为TIMER_PWM_PERIOD-1。
建立MSP430 Launchpad开发环境
建立MSP430 Launchpad 开发环境从MSP430 Launchpad 主页下载Code Composer Studio (CCS)。
在下载页面选择Download latest production CCSv4 MSP430/C28x code size limited image 下面的链接。
有几点要注意:1、下载时需要注_册TI 账户。
2、16KB 限制。
即对于msp430x2xxx 来说不算限制。
3、安装时自动安装驱动及License。
4、使用Vmware 虚拟机连接Launchpad 时会冻住,在一段时间内虚拟机不响应。
USB 设备无法识别。
(Ubuntu11.04 + Vmware 3.1.3 + Windows XP SP3)5、Windows XP 下显示Launchpad 对应的JTAG 仿真器无法启动,但不影响编程及调试。
6、CCS 的IDE 实际上是eclipse。
第4 点比较奇怪,不知道其他人有没有遇到?有没有解决方法?* Linux 篇从MSPGCC 主页下载目前最新的mspgcc-20110716。
解压缩后的文件中除了文档外,还包括README、3 个patch 文件和2 个version 文件。
构筑流程是:1、确保系统中装有以下软件包:patch ncurses-dev build-essential bison flex libgmp3-dev libmpfr-dev libmpc-dev texinfo zlib1g-dev2、阅读README。
3、阅读patch。
4、根据patch 内指示依次补丁、编译及安装binutils、gcc、gdb。
如果patch 内的下载地址失效,用google 搜索同名文件下载并验证md5。
5、根据version 中的版本号下载依次下载、安装msp430mcu 和msp430-libc。
6、下载mspdebug,当前版本mspdebug-0.17。
MSP-EXP430Launchpad实验指南参考代码
MSP-EXP430Launchpad 实验指南参考代码附录本附录为MSP-EXP430Launchpad实验指南中各章节涉及示例程序的完整参考代码。
目录第三章 (1)3.5 (1)3.6 (4)第五章 (10)5.1.1 (10)5.1.2 (12)5.1.3 (13)5.1.4 (16)5.1.5 (17)5.1.6 (20)5.2.1 (21)5.2.2 (21)5.2.3 (24)5.2.4 (26)5.3.1 (28)5.3.2 (29)5.4.1 (29)5.4.2 (30)5.4.3 (33)5.5.1 (37)5.5.2 (41)5.5.3 (52)5.5.4 (52)5.5.5 (53)第六章 (57)6.1.3 (57)6.1.4 (58)6.2.3 (61)6.3.3 光照度检测模块程序设计 (64)6.4.3 (66)6.5.3 (72)6.6.3 (74)6.6.4 (76)第三章3.5Flash使用的代码样例#include "msp430g2553.h"/****************************************************g2553有4个数据段,每个数据段有64bytes,共256bytesD:0x1000 -- 0x003FC:0x1040 -- 0x107FB:0x1080 -- 0x10BFA:0x10C0 -- 0x10FF****************************************************/#define uint unsigned int#define uchar unsigned char#define SegA 0x010C0#define SegB 0x01080#define SegC 0x01040#define SegD 0x01000#define SegSize 64/********************Flash初始化********************/void FlashInit(){FCTL2=FWKEY+FSSEL_2+FN1; //选择SMLCK作为时钟源,二分频}/********************Flash检测忙********************/void FlashCheckBusy(){while(BUSY==(FCTL3&BUSY)); //检测是否忙}/********************Flash段擦除*******************/void FlashErase(int SegX){_DINT(); //关闭总中断FlashCheckBusy(); //检测Flash是否处于忙状态FCTL3=FWKEY; //lock=0开锁FCTL1=FWKEY+ERASE; //使能段擦除*((int *)SegX)=0x00; //段擦除--空写FlashCheckBusy(); //检测Flash是否处于忙状态FCTL3=FWKEY|LOCK; //上锁return;}/********************Flash写字节********************/ void FlashWriteChar(uint addr,char wdata){_DINT(); //关闭总中断FlashCheckBusy(); //检测Flash是否处于忙状态FCTL3=FWKEY; //lock=0开锁FCTL1=FWKEY+WRT; //写使能*((uchar *)addr)=wdata; //将wdata存入addr变量地址中 FCTL1=FWKEY; //写关闭FCTL3=FWKEY+LOCK; //上锁return;}/********************Flash读字节********************/ char FlashReadChar(uint addr){char rdata;rdata=*(char*)addr; //读取addr所指地址的值return rdata;}/********************Flash写字********************/void FlashWriteWord(uint addr,uint wdata){_DINT(); //关闭总中断FlashCheckBusy(); //检测忙,若忙,则等待FCTL3=FWKEY; //lock=0开锁FCTL1=FWKEY+WRT; //写使能*((uint *)addr)=wdata; //向地址addr处写入wdataFCTL1=FWKEY; //写关闭FCTL3=FWKEY+LOCK; //上锁return;}/********************Flash读字********************/uint FlashReadWord(uint addr){uint rdata;rdata=*(uint *)addr; //读取变量addr地址的值return rdata;}/********************Flash修改字节********************/void FlashModifyChar(uint SegX,char AddrNum,char wdata){char i,TempArry[SegSize];for(i=0;i<SegSize;i++) //读入存{TempArry[i]=*(uint *)(SegX+i);}TempArry[AddrNum]= wdata; //在数组中的某一位置AddrNum写入wdata FlashErase(SegX); //段擦除FCTL3=FWKEY; //lock=0开锁FCTL1=FWKEY+WRT; //准备写for(i=0;i<SegSize;i++) //向段中重新写数组{*(uint *)(SegX+i)=TempArry[i];}FCTL1=FWKEY; //写关闭FCTL3=FWKEY+LOCK; //上锁}/********************Flash批量写********************/void FlashBurstWrite(int SegX,int *pStr){int i;FlashErase(SegX); //段擦除FCTL3=FWKEY; //lock=0,开锁FCTL1=FWKEY+WRT; //写使能for(i=0;i<2*sizeof(pStr);i++) //将数组容写入段中{*(uchar *)(SegX+i)=*(pStr+i);}FCTL1=FWKEY; //写关闭FCTL3=FWKEY+LOCK; //上锁}main(){char ReadChar;uint ReadWord;int p[]={'a','b','c','d'};WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P1DIR=0xff; //P1口设为输出,闲置的I/O不悬空P2DIR=0xff; //P2口设为输出,闲置的I/O不悬空P1OUT=0xff; //P1口输出1P2OUT=0xff; //P2口输出1FlashInit(); //Flash初始化FlashErase(SegD);FlashWriteChar(0x01007,0x12); //向地址01008h写入12hReadChar=FlashReadChar(0x01007); //读取地址01008h的值FlashWriteWord(0x01008,0x3456); //向地址01009h和0100Ah依次写入56h和34hReadWord=FlashReadWord(0x01008); //读取从地址01009h起的一个字FlashWriteChar(0x01017,ReadChar); //向地址01018h写入12hFlashWriteWord(0x01018,ReadWord); //向地址01019h和0101Ah依次写入56h和34hFlashBurstWrite(SegC,p); //向SegD段从地址0110h依次写入a、b、c、dFlashModifyChar(SegB,0x02,0xef); //将地址0112h和0113h容改为e和f_BIS_SR(CPUOFF); //关闭CPU}3.61. USCI模块串行异步通信例程以MSP430G2553的USCI模块串行异步通信操作为例,介绍串口寄存器配置及收发程序处理过程。
M430_Launchpad串口UART使用
M430_Launchpad串口UART使用首先,不得不说Launchpad是一个很实用的开发工具. 就我个人是用来看, 板载SBW的JTAG相当实用.而且还可以仿真我的MSP430F5438的板子,实在相当给力,省去了上百元的仿真器的费用~~爽~~但是,(一碰到这个词果断没什么好事..) 这个板子有个地方搞得非常非主流,不仔细阅读文档的话,妥妥的要被坑!问题就出在板上的J3插座.(图中,左侧的黄框框)前面四个是正常的, 最后一个TXD.靠近EMULATION一侧的排针其实是和右侧芯片的3脚相连的.从下面PCB图可以看出来.至于RXD么,就自己看UserGuide咯.不多废话.(其实这张图里基本也就看出来了..)这么设计,我估摸着,是因为G2系列的芯片中,有一部分芯片,外设资源极少,比如早期的给的14脚的那个芯片(型号不记得了…),据说是没有USCI模块的.所以TI给出的例程中,很NB的用了TimerA实现了串口通信功能.(不得不说那个程序写的相当牛非凡人之作!)但是,后来主流都是M430G2553 和 M430G2452了,外设足够多了,用UART的话,基本都用硬件的USCI模块了(硬件多方便!不用CPU干预,还带FIFO,中断源也多!)但是为了照顾那些个低端的片子,保证通用性,就设计了这么个接插法..不多废话,下面直接解释该如何接线吧.如上图,是G2553的引脚图(20Pin), PIN3是RXD,应当接EMULATION的TXDPIN4是TXD, 应当接EMULATION的RXD结论:如果使用TI提供的TimerA实现的UART,请按常规思路接跳线帽.(常规思路就是左右短接,5个跳线帽把5组分别短接)如果要用硬件USCI模块实现UART,请切记这样接…(我被坑了好久….明明一开始程序就是对的,可是示波器测出来波形就是不对,也接收不到数据….以后要仔细读文档啊……….)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
手把手教你使用TI MSP430 LaunchPad
1、用USB线连接电脑PC和目标板LaunchPad。
Windows会自动搜索驱动,当然,一般来说,都是安装失败的。
2、LaunchPad套件并没有提供光盘,驱动在哪里?IAR for MSP430已经集成了TI USB FET 的驱动,所以,我们先把IAR for MSP430给安装上,驱动也就有了。
这里驱动路径如下:D:\Programs\IAR Systems\Embedded Workbench 6.0 Evaluation\430\drivers\TIUSBFET 至于软件安装时的注册/和谐问题,大家都是很有办法的,你懂的。
3、安装了IAR for MSP430之后,重新拔插USB,Windows 7会自动重新搜索驱动,一般是可以安装成功的。
如果安装失败了,指定刚刚的路径安装驱动即可。
在设备管理器可以看到如下端口MSP430 Application UART(COM28),端口号视实际情况而定。
有些地方,端口号并不支持到那么大,可以通过高级设置更改,更改方法如下面链接所示:/viewthread.php?tid=237823&page=1&fromuid=194149#pid827 620
很好,驱动安装完毕。
下面开始用IAR for MSP430建立工程。
工程建立
1、运行IAR Embedded Workbench,点击菜单栏Project –> Create New Project…
选择C –> main,这里也可以选择Empty project,但选择C -> main的话,它会自己帮你新建一个main.c文件,并且把它加入到工程中。
给工程指定一个工程名称Blinky,如下图:
2、编写如下代码:
#include "io430.h"
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0x01; // Set P1.0 to output direction while(1)
{
volatile unsigned inti;
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
i = 50000; // Delay
while (i--);
}
}
编写完成后,点击工具栏的Make按钮:
提示Save Workspace As,这里给它指定一个工作空间名称也是Blinky,编译之后,信息栏显示编译通过:
3、编译通过之后,右击工程,选择Options…:
这里主要配置三个地方,一是在General Options的Target选项卡里选择对应的器件Device,这里是MSP430G2231:
二是Debugger里选择FET Debugger:
三是检查FET Debugger里的设置是否正确,这里是Texas Instrument USB-IF采用Automatic方式:
4、经过以上设置,重新编译一下,点击Make按钮,编译无误之后,点击工具栏绿色小三角的Download and Debug按钮,就可以进入仿真了。
5、如果出现错误提示,Fatal error: Failed to re-initialize, Session aborted!或者Fatal error: Failed to initialize…
不用着急,首先检查步骤3里面的Options的三个设置选项卡设置是否正确,重新编译一下工程,然后把USB线重新拔插一下,给板子断电后重上电,这时再点击Download and Debug,一般是可以的了。
6、程序运行的结果当然是我们最熟悉的点灯啦,把J5的P1.0短接帽给插上,我们就可以看到LED1一闪一闪了。
至此,LaunchPad的IAR开发入门完成,下来就是自主学习啦。
/w282529350/article/details/7302416。