MSP430单片机基础实验手册.docx
- 文档编号:18296097
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:10
- 大小:201.39KB
MSP430单片机基础实验手册.docx
《MSP430单片机基础实验手册.docx》由会员分享,可在线阅读,更多相关《MSP430单片机基础实验手册.docx(10页珍藏版)》请在冰点文库上搜索。
MSP430单片机基础实验手册
1、MSP430单片机基础实验
1.1、IO口实验
实验目的:
学会MSP430单片机IO口的常规操作。
实验原理
开发板上的3个LED灯和IO口的对应关系如下:
POWER——P1.7ISO14443A——P1.6ISO15693——P1.4
根据原理图分析,只需要将对应IO输出为低电平即可使其对应三极管导通,达到点亮对应LED的目的。
关键代码分析
#include
volatileunsignedinti;//volatiletopreventoptimization
intmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimer
P1DIR|=0x80;//SetP1.7tooutputdirection
for(;;)
{
P1OUT^=0x80;//ToggleP1.7usingexclusive-OR
i=50000;//Delay
do(i--);
while(i!
=0);
}
}
对应工程详见:
\感知RF2实验光盘2013\RFID技术实验\1-MSP430单片机基础实验\io
实验结果
POWER对应的LED灯闪烁。
作业
1、对其他连个灯进行对应操作;
2、流水灯显示编程控制。
1.2、定时器实验
实验目的:
学会MSP430单片机定时器常规配置及中断操作。
实验原理
采用定时器TA溢出中断对LED灯进行取反操作。
关键代码分析
#include
intmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//StopWDT
P1DIR|=0x80;//P1.0output
TACCTL0=CCIE;//TACCR0interruptenabled
TACCR0=50000;
TACTL=TASSEL_2+MC_2;//SMCLK,contmode
__bis_SR_register(LPM0_bits+GIE);//EnterLPM0w/interrupt
}
//TimerA0interruptserviceroutine
#pragmavector=TIMERA0_VECTOR
__interruptvoidTimer_A(void)
{
P1OUT^=0x80;//ToggleP1.7
TACCR0+=50000;//AddOffsettoTACCR0
}
对应工程详见\感知RF2实验光盘2013\RFID技术实验\1-MSP430单片机基础实验\timer
实验结果
LED灯快速闪烁,改变TACCR0值,闪烁时间间隔改变。
作业
1、用定时器实现流水灯显示;
2、精确定时1秒钟LED闪烁一次。
1.3、串口实验
实验目的:
学会MSP430单片机串口基本配置和收发数据基本编程控制。
实验原理
将串口0波特率设置为9600,通过串口接收数据中断,将接收的数据通过串口发出,并在串口调试助手上观察。
串口原理图设计如下所示。
注意:
这里采用了CP2102串口转USB芯片。
所以进行该实验时,必须确保CP2102驱动已经正确安装。
安装过程详见0.2.2节。
关键代码分析
#include
intmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//StopWDT
if(CALBC1_1MHZ==0xFF)//Ifcalibrationconstanterased
{
while
(1);//donotload,trapCPU!
!
}
DCOCTL=0;//SelectlowestDCOxandMODxsettings
BCSCTL1=CALBC1_1MHZ;//SetDCO
DCOCTL=CALDCO_1MHZ;
P3SEL=0x30;//P3.4,5=USCI_A0TXD/RXD
UCA0CTL1|=UCSSEL_2;//SMCLK
UCA0BR0=104;//1MHz9600
UCA0BR1=0;//1MHz9600
UCA0MCTL=UCBRS0;//ModulationUCBRSx=1
UCA0CTL1&=~UCSWRST;//**InitializeUSCIstatemachine**
IE2|=UCA0RXIE;//EnableUSCI_A0RXinterrupt
__bis_SR_register(LPM0_bits+GIE);//EnterLPM0,interruptsenabled
}
//EchobackRXedcharacter,confirmTXbufferisreadyfirst
#pragmavector=USCIAB0RX_VECTOR
__interruptvoidUSCI0RX_ISR(void)
{
while(!
(IFG2&UCA0TXIFG));//USCI_A0TXbufferready?
UCA0TXBUF=UCA0RXBUF;//TX->RXedcharacter
}
实验结果
作业
1、设置串口波特别为115200进行数据传输;
2、编写串口发送多字节数据函数。
1.4、BEEP实验
实验目的:
学会通过IO口驱动蜂鸣器。
实验原理
蜂鸣器原理图如下所示。
通过原理图可以看出。
只需要BUZZER-IN端输入为低电平即可驱动蜂鸣器进行蜂鸣。
BUZZER-IN对应MSP430单片机的P3.6引脚,详见0.1.1节的MSP430F2370控制单元原理图所示。
关键代码分析
#include
intmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//StopWDT
P3DIR|=0x40;//SetP1.0tooutputdirection
TBCTL=TBSSEL_2+MC_2+TBIE;//SMCLK,contmode,interrupt
__bis_SR_register(LPM0_bits+GIE);//EnterLPM0w/interrupt
}
//Timer_B3InterruptVector(TBIV)handler
#pragmavector=TIMERB1_VECTOR
__interruptvoidTimer_B(void)
{
switch(__even_in_range(TBIV,14))//Efficientswitch-implementation
{
case2:
break;//TBCCR1notused
case4:
break;//TBCCR2notused
case14:
P3OUT^=0x40;//overflow
break;
}
}
这里采用定时器定时让P3.6输出PWM信号。
实验结果
烧入程序运行后,蜂鸣器进行间断蜂鸣。
作业
1、可以尝试输出一段音乐。
1.5、WDT实验
实验目的:
学会看门狗定时器的使用。
实验原理
看门狗定时器(WDT)是MSP430系列单片机中常用的一种部件。
在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。
这些干扰作用于数字器件,极易使其产生误动作,从而失去应有的控制功能,引起MSP430发生“程序跑飞”事故。
若不进行有效的处理,程序就不能回到正常的状态,从而失去应有的控制功能。
看门狗定时器正是为了解放这类问题而产生的,尤其是在具有循环结构的程序任务中更为有效。
在正常操作器件,一次WDT定时时间到,将产生一次器件复位。
如果通过编制程序使WDT定时时间稍大于程序执行一遍所用的时间时,并且程序执行过程中都有对看门狗定时器清零的指令,使计数器重新计数,则程序正常执行时,就会在WDT定时时间到达之前对WDT清零,不会产生WDT溢出,如果由于干扰使程序跑飞,则不会在WDT定时时间到达之前执行WDT清零指令,WDT就会产生溢出,从而产生系统复位CPU需用重新运行用户程序,这样程序就可以又恢复正常运行状态。
MSP430看门狗除了具有上述系统监测的特定用途之外,还可以作为内部定时器来使用,当选择的时间到达之后,和其他定时器一样产生一个定时中断。
此外WDT还可以被完全停止活动以支持超低功耗应用。
[1]看门狗模式
由于在上电复位或系统复位时,WDTCNT和WDTCL两寄存器内容被全部清除(晶振为32768Hz,SMCLK=1MHz):
复位后,工作在看门狗模式,以ACLK为时钟,WDT定时时间为32ms。
上述情况将导致WDT的运行自动进入看门狗模式。
所以,用户软件一般都需要进行如下操作:
●进行WDT的初始化:
设置合适的时间(通过SSEL、IS0、IS1位来选定)。
●周期性的对WDTCNT清零:
防止WDT溢出,保证WDT的正确使用。
●在看门狗模式下,如果计数器超过了定时时间,就会产生复位和激活系统上电清除信号,系统从上电复位的地址重启动。
●如果系统不用看门狗功能,应该在程序开始处禁止看门狗功能。
[2]定时器模式
WDTCTL的WDTTMSEL位置位选择定时器模式。
这一模式产生选定时间的周期性中断。
定时时间可以通过WDTCTL的WDTCNCTL位置位来开始。
●改变定时时间而不同时清楚WDTCNT将导致不可预料的系统立即复位或中断。
定时时间可以通过WDTCTL的CNCTL位置位来开始。
●如果先后分别进行清除和定时时间选择,则可能立即引起不可预料的系统复位或中断。
●另外,在终场工作时。
改变时钟源可能导致WDTCNT额外的计数时钟。
[3]低功耗模式
当系统不需要WDT做看门狗和定时器时,可关闭WDT以减小功耗。
控制位WDTHOLD=1时关闭WDT,这时看门狗停止工作。
关键代码分析
使用看门狗定时器功能产生一个方波(周期的取反P1.7)。
#include
intmain(void)
{
WDTCTL=WDT_MDLY_32;//SetWatchdogintervalto~27ms
IE1|=WDTIE;//EnableWDTinterrupt
P1DIR|=0x80;//SetP1.7tooutputdirection
__bis_SR_register(LPM0_bits+GIE);//EnterLPM0w/interrupt
}
//WatchdogTimerinterruptserviceroutine
#pragmavector=WDT_VECTOR
__interruptvoidwatchdog_timer(void)
{
P1OUT^=0x80;//ToggleP1.7usingexclusive-OR
}
实验结果
POWER对应LED灯进行快速闪烁。
作业
1、将看门狗设置为看门狗模式进行编程实验。
更多源文件详见:
\感知RF2实验光盘2013\RFID技术实验\1-MSP430单片机基础实验\C目录下。
可以自行建立工程进行对应实验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSP430 单片机 基础 实验 手册