东南大学单片机实验一实验二解析.docx
- 文档编号:23820952
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:15
- 大小:123.12KB
东南大学单片机实验一实验二解析.docx
《东南大学单片机实验一实验二解析.docx》由会员分享,可在线阅读,更多相关《东南大学单片机实验一实验二解析.docx(15页珍藏版)》请在冰豆网上搜索。
东南大学单片机实验一实验二解析
实验一&实验二
04011003杨阳
一、实验目标:
1.熟悉FFTB6638实验平台。
2.熟悉CCS集成开发环境,学习MSP430单片机编程及调试方法。
3.MSP430IO端口输入、输出操作,按键输入的状态查询、按键的消抖和按键输入的中断获取。
4.掌握MSP430单片机时钟模块的配置。
二、实验内容:
课堂验收实验:
实验一:
实验内容:
1 使ACLK频率为16384Hz,并用示波器观测
2 使SMCLK的频率为2MHz,并用示波器观测
3 使用按键控制SMCLK的频率在2MHz和16MHz之间切换
关键代码:
UCSCTL3=SELREF_2;//SetDCOFLLreference=REFO
UCSCTL4|=SELA_2;//SetACLK=REFO
UCSCTL0=0x0000;//SetlowestpossibleDCOx,MODx
UCSCTL5=0x1000;//setACLK/2
do{
UCSCTL7&=~(XT2OFFG+XT1LFOFFG+DCOFFG);
SFRIFG1&=~OFIFG;//Clearfaultflags
}while(SFRIFG1&OFIFG);
__bis_SR_register(SCG0);//DisabletheFLLcontrolloop
UCSCTL1=DCORSEL_2;//SelectDCOrange16MHzoperation
UCSCTL2|=63;//SetDCOMultiplierfor2MHz
//(N+1)*FLLRef=Fdco,(63+1)*32768=2MHz
__bic_SR_register(SCG0);//EnabletheFLLcontrolloop
__delay_cycles(63000);
P2IE|=BIT7;P2IFG&=~BIT7;
__enable_interrupt();while
(1);
}
#pragmavector=PORT2_VECTOR
__interruptvoidport_2(void)
{
__delay_cycles(5000);
if(P2IN&BIT7)
{
__bis_SR_register(SCG0);//DisabletheFLLcontrolloop
UCSCTL1=DCORSEL_5;//SelectDCOrange16MHzoperation
UCSCTL2|=511;//SetDCOMultiplierfor16MHz
//(N+1)*FLLRef=Fdco,(511+1)*32768=16MHz
__bic_SR_register(SCG0);//EnabletheFLLcontrolloop
P2IFG&=~BIT7;
}
}
实验现象:
1、ACLK=16.39kHz
2、按键前,SMCLK=2MHz
3、按键后,SMCLK=16MHz
实验二:
实验内容:
试修改PWM的频率为16Hz,占空比为1:
2和2:
1
关键代码:
#include
voidmain(void){
WDTCTL=WDTPW+WDTHOLD;//StopWDT
P3DIR|=BIT2+BIT3;//P3.2andP3.3output
P3SEL|=BIT2+BIT3;//P3.2andP3.3optionsselect
TA1CCR0=131072-1;//PWMPeriod
TA1CCTL1=OUTMOD_7;//CCR1reset/set
TA1CCR1=87381;//CCR1PWMdutycycle
TA1CCTL2=OUTMOD_7;//CCR2reset/set
TA1CCR2=43691;//CCR2PWMdutycycle
UCSCTL4|=SELS_2;//SetSCLK=REFO
TA1CTL=TASSEL_2+MC_1+TACLR;//SMCLK,upmode,clearTAR
__bis_SR_register(LPM0_bits);//EnterLPM0
__no_operation();//Fordebugger
}
思考题:
1、MSP430所需的定时信号可以用什么方法获得?
答:
MSP430所需的定时信号可以用软件和硬件两种方法来获得。
2、MSP430F6xx系列单片机有哪些定时器资源?
答:
看门狗定时器(WDT),定时器A(Timer_A),定时器B(Timer_B)和定时器D(Timer_D)等。
3、MSP430系列单片机看门狗定时器可以有什么用途?
答:
基本定时、当程序发生错误时执行一个受控的系统重启动
4、MSP430F6xx看门狗定时时间是如何确定的?
答:
用IS2、IS1、IS0端口选择看门狗定时器的定时长度
5、简述MSP430系列单片机TIMER_A的特性。
答:
Ø带有4种操作模式的异步16位定时/计数器。
Ø输入时钟可以有多种选择,可以是慢时钟,快时钟以及
Ø外部时钟。
Ø可配置捕获/比较寄存器数多达7个。
Ø可配置的PWM(脉宽调制)输出。
Ø异步输入和同步锁存。
不仅能捕获外部事件发生的时间
Ø还可锁定其发生时的高低电平。
Ø完善的中断服务功能。
快速响应Timer_A中断的中断向量
Ø寄存器。
Ø8种输出方式选择。
Ø可实现串行通讯。
6、MSP430系列单片机TIMER_A由哪几个部分组成?
答:
MSP430系列单片机TIMER_A由定时计数器、时钟源的选择和分频、捕获/比较器、输出单元四个部分组成
7、TimerA有哪几种计数模式?
答:
停止模式、增计数模式、连续计数模式、增/减计数模式
8、TimerA输出PWM的频率和占空比是如何确定的?
答:
如果Timer_A定时器的计数器工作在增计数方式,输出采用输出模式7(复位/置位模式),则可利用寄存器TAxCCR0控制PWM波形的周期,用某个寄存器TAxCCRx控制占空比。
这样Timer_A就可以产生出任意占空比的PWM波形。
其他实验:
实验一、LED跑马灯
实验内容:
开发板上3个LED定时翻转,实现闪烁的效果。
实验原理:
开发板上的3个LED灯和IO口对应关系如下:
LED_YELLOW---P4.1、LED_GREEN---P4.2、LED_RED---P4.3
从MSP430F6638的芯片手册中找到,与P4端口相关的寄存器地址信息,P4端口的基地址为0x0220,要完成该实验,只需要设置两个相关寄存器。
P4OUT和P4DIR。
P4DIR为方向寄存器,P4OUT为数据输出寄存器。
从图一可以知道,P4OUT和P4DIR的偏移地址分别为0x03和0x05。
这两个寄存器的地址我们采用“基地址+偏移地址”的方式来表示。
实验现象分析:
例程1、2分别为看门狗打开和关闭,看门狗打开时延时程序(for语句循环次数)不改变LED灯闪烁频率。
看门狗关闭后闪烁频率由延时程序决定。
改变MCLK的时钟频率改变例程2闪烁频率,不改变例程1的闪烁频率。
思考题:
(1)MSP430的IO口都具备哪些功能?
答:
输入输出、中断等功能。
(2)与IO口相关的寄存器有哪些?
答:
PxDIR,PxIN,PxOUT,PxREN,PxSEL,PxDS,PxIE,PxIES,PxIFG。
(3)如何确定一个寄存器的地址?
答:
基地址+偏移地址。
实验二、按键输入与中断
实验内容:
本实验通过中断的方式演示了按键的操作。
与查询方式相比,中断按键具有响应速度快,占用MCU资源少的优点。
实验原理:
开发板上的按键和MCU的IO口对应关系如下:
P2.6---KEY1
P2.7---KEY2
开发板上三个LED灯和MCU的IO口对应关系如下:
实验现象:
按下开发板上的按键,产生一个中断请求,在中断服务函数中,点亮对应的LED灯。
思考题:
(1)如何定义一个MSP430的中断函数?
答:
中断函数的写法:
在MSP430中,用扩展关键字来__interrupt来表明该函数为中断函数。
__interruptvoidport_2(void);
语法:
interruptvoid函数名()或者Interrupt【中断向量】void函数名()
参数:
中断函数没有参数。
中断函数需要指定中断向量。
返回:
中断返回一般是void,没有返回值。
(2)在中断服务程序中,为什么要清楚中断标志位?
答:
一般的情况下,中断的优先级比较高,系统或者硬件都是优先响应处理中断的;而中断标志则是是否有中断产生的标识,所以没有清除中断标志,系统或者硬件会认为有中断产生,而去响应,这样就可能导致出错了。
中断标识有些是会自动清除的,比如MSP430中的通信时发送,接收中断标志,而有些是必须手动清除的。
(3)MSP430单片机与IO中断相关的寄存器有哪些?
(2)答:
PxIE,PxIES,PxIFG。
实验三、按键消抖
实验内容:
按键是电子产品中的一个常用器件。
通常的按键所用的开关为机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而采取的措施就是按键消抖。
实验原理:
按键和MCU连接有两种方式:
(1)Pull-UP:
在按键没有按下的时候,MCU相应的管脚为低电平。
按键按下
时,MCU的管脚连接到VCC,此时为高电平。
(2)Pull-DOWN:
在按键没有按下的时候,MCU相应的管脚为高电平。
按键按下
时,MCU的管脚连接到地,此时为低电平。
按键按下的前后存在一个抖动的时间。
实验现象:
按下按键,相应的LED灯点亮。
思考题:
(1)软件消抖方法,除了采用延时以外,是否还有其它方法可以实现去抖的效果?
答:
还可以通过中断的方法实现去抖的效果。
(2)延时函数delay_ms延时精确吗?
如果不精确,用什么方法可以达到精确的延时效
果?
答:
不太精确,可以用内部定时器达到更精确的延时效果。
(3)如果用中断来检测按键,和延时方法相比,是否更有优势?
答:
中断可以通过边沿触发,在中断服务程序中把是否有键按下的信息反馈给主函数,省去了延时函数的等待过程,所以更有优势。
实验四、按键输入查询
实验内容:
实验演示了按键的基本功能,MUC通过检测相应I/O的电平变化,来判断是否有按键按下。
有按键按下时,实验平台上的三个LED点亮。
松开按键的时候,LED灯熄灭。
实验原理:
(1)当按键没有按下时:
DVCC进过两个电阻连接到MCU的IO口,此时MCU相应的IO
口电平为高电平。
(2)当按键按下时:
DVCC经过电阻R76之后对地导通,此时MCU相应的I/O口电平为
低。
(3)所以,通过检测与key1、key2相连的两个IO口电平状况就可以知道按键有无按下。
完成该实验,我们只需要用到3个寄存器:
PxIN、PxOUT、PxDIR
实验现象:
按下按键,相应的LED灯点亮。
思考题:
(1)该实验代码的效果是只有按键按下时,LED灯才会点亮。
按键松开后,LED熄
灭。
如何修改程序,使按下按键一次,LED点亮,再次按下按键时,LED熄灭?
答:
while
(1)
{
if((P2IN&0x40)==0)//Ifkeyispressed
{P4OUT^=BIT1+BIT2+BIT3;//XORP4.1,P4.2,P4.3
}
}
(2)下面这种操作IO的方法和直接对IO口赋值相比,有什么好处?
P2DIR&=~(1<<6);//IO口方向设置为输入
P4DIR|=(1<<1)|(1<<2)|(1<<3);//IO口方向设置为输出
答:
避免对P2和P4其他的IO口造成影响
(3)去掉该句代码,程序是否能正常运行?
为什么?
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
答:
不能。
因为在程序开始之前,关门狗计时器是开启状态,如果不先关掉,有可能在程序运行过程中发生复位。
实验五、ACLK,SMCLK,MCLK时钟的产生
实验内容:
(1)ex5_1使用了XT1,查看ACLK=XT1=32768Hz;
(2)ex5_2使用了REFO和XT2,查看ACLK=REFO=32768Hz,SMCLK=XT2=4MHz
实验原理:
UCS模块包括5个时钟源
(1)XTICLK:
低频/高频振荡器,可以使用32768Hz外部晶振;
(2)VLOCLK:
内部低功耗、低频率振荡器,典型频率为10KHz;
(3)REFOCLK:
进过调整的内部振荡器,典型值为32768hz,可以用作FLL的参考时
钟;
(4)DCOCLK:
内部数字时钟,可以通过FLL得到稳定的时钟信号;
(5)XT2CLK:
可选的高频振荡器。
可以用作FLL的参考时钟。
UCS模块提供的3个可利用的时钟信号:
(1)ACLK:
辅助时钟。
可ACLK可以为某些外围模块提供时钟。
ACLK可以被1,2,4,8,16,32分频。
ACLK/n就是ACLK经过1,2,4,8,16,32分频获得的,同时也可以通过外部引脚输出;
(2)MCLK:
主时钟。
MCLK可以被1,2,4,8,16,32分频后为CPU和系统提供时钟。
MCLK的获得和来源ACLK的相同;
(3)SMCLK:
子系统时钟。
SMCLK被1,2,4,8,16,32分频后为个别外围模块提供时钟。
其来源和ACLK相同。
实验过程:
通过示波器实际测量,MSP430可以通过软件配置,选择不同的时钟源,工
作在不同的时钟频率下。
使ACLK频率为16384Hz:
更改UCSCTL5的DIVPA在do——while语句前,加UCSCTL5|=DIVPA_1;
SMCLK的频率为2MHz:
更改UCSCTL5的DIVS在do——while语句前,加UCSCTL5|=DIVS_1;
思考题:
(1)MSP430系列单片机有哪些时钟输入信号?
答:
辅助时钟ACLK,系统主时钟单元MCLK,系统子时钟SMCLK
(2)MSP430系列单片机的DCO振荡器有什么重要用途?
答:
MSP430的两个外部振荡器产生的时钟信号可经分频后用作系统时钟MCLK,当振荡器失效时,DCO振荡器会自动被选为MCLK的时钟源,因此由振荡器失效引起的NMI中断请求可以得到响应,甚至在CPU关闭的情况下也能得到处理。
MSP430可以让任意被允许的中断请求在低功耗下得到服务,甚至在LPM4模式下(所有振荡器停止工作,CPU、MCLK、SMCLK、ACLK处于禁止状态)。
MCLK在中断服务时自动有效。
当DCO振荡器没有用作SMCLK和MCLK时钟信号时,可用控制位SCG0关闭直流发生器消耗的电流定义了DCOCLK的基本频率。
(3)MSP430系列单片机不接任何振荡器是否可以正常工作?
答:
可用DCO振荡器(一个可数字控制的RC振荡器,可通过软件调节)F4xx应用了增强型锁频环技术FLL+,硬件自动调整频率,支持时钟配置超低功耗应用。
F41/42X系列没有XT2,而MSP430X1XX系列单片机时钟模块通过软件调节DCO频率,都有三个时钟源。
实验六、FLL与时钟校正
实验内容:
使用了XT1、DCO和FLL;查看ACLK=?
SMCLK=?
实验过程:
ACLK=XT1=32768Hz,MCLK=SMCLK=DCO=(74+1)*REFO=2457600Hz
MCLK、SMCLK倍频:
设置FLL的相关参数,包括分频器(N+1)FLLN和分频值FLLD以及FLL的参考时钟,通过f(DCOCLK)=D*(N+1)*f(FLLREFCLK)得到稳定的DCOCLK频率。
SMCLK的频率改为16MHz:
UCSCTL1=DCORSEL_6;
UCSCTL2=FLLD_1+511;MCLK=SMCLK=DCO=(511+1)*REFO=16MHz
用按键控制SMCLK的频率在2MHz和16MHz之间切换:
while
(1)
{
if((P2IN&0x40)==0)//Ifkeyispressed
{UCSCTL1=DCORSEL_6;
UCSCTL2=FLLD_1+511;MCLK=SMCLK=DCO=(511+1)*REFO=16MHz
}
if((P2IN&0x80)==0)//Ifkeyispressed
{UCSCTL1=DCORSEL_3;
UCSCTL2=FLLD_1+63;MCLK=SMCLK=DCO=(511+1)*REFO=2MHz
}
}
思考题:
(1)MSP430系列单片机有哪些时钟输入源?
答:
LFT1CLK(低速32768Hz,高速450Hz到8MHz),XT2CLK(450Hz到8MHz),DCOCLK。
(2)MSP430系列单片机提供几种时钟信号?
每种时钟信号的通常用途是什么?
答:
三种
ACLK辅助时钟:
一般用于低速外设
MCLK系统主时钟:
主要用于CPU和系统
SMCLK子系统时钟:
主要用于高速外围模块
(3)MSP430系列单片机的DCO振荡器有什么重要用途?
答:
MSP430的两个外部振荡器产生的时钟信号可经分频后用作系统时钟MCLK,当振荡器失效时,DCO振荡器会自动被选为MCLK的时钟源,因此由振荡器失效引起的NMI中断请求可以得到响应,甚至在CPU关闭的情况下也能得到处理。
MSP430可以让任意被允许的中断请求在低功耗下得到服务,甚至在LPM4模式下(所有振荡器停止工作,CPU、MCLK、SMCLK、ACLK处于禁止状态)。
MCLK在中断服务时自动有效。
当DCO振荡器没有用作SMCLK和MCLK时钟信号时,可用控制位SCG0关闭直流发生器消耗的电流定义了DCOCLK的基本频率。
实验七、时钟配置和输入选择
实验内容:
使用了XT1、XT2;查看ACLK=?
SMCLK=?
实验原理:
本实验演示了使用一个外部的32KHz晶振作为ACLK的时钟输入源,使用一个更高频率的晶振作为SMCLK的时钟输入源。
供CPU使用的MCLK由内部的DCO产生。
32kHz的晶振连接到CPU的XIN和XOUT管脚。
高频率的晶振连接到CPU的XT2IN和
XT2OUT。
ACLK通过P1.0输出,SMCLK通过P3.4输出。
实验结果:
ACLK=XT2=32768Hz,SMCLK=XT2=4MHz
思考题:
(同实验五思考题)
总结:
前两次课是在理论课的基础上,在老师的带领下,我们的初次单片机实践,我对msp430有了更清楚的认识,特别是对于时钟的分频,中断的触发,以及看门狗的运用等等。
更重要的是学会了学习的方法,对类似的问题知道如何着手解决,为将来更深入的学习打下了坚实的基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 单片机 实验 解析