试验6试验名称-基本时钟和低功耗模式_第1页
试验6试验名称-基本时钟和低功耗模式_第2页
试验6试验名称-基本时钟和低功耗模式_第3页
试验6试验名称-基本时钟和低功耗模式_第4页
试验6试验名称-基本时钟和低功耗模式_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-!实验名称:基本时钟和低功耗模式姓名:学号:实验班号:机器号:1. 了解MSP430Gxxx基本时钟模块的工作原理,掌握其控制方法;2. 掌握利用时钟信号和中断技术实现定时功能的方法;3 .掌握低功耗模式控制方法。实验任务1.数字示波器的使用(在实验 5中已完成)1 )将信号源的波形在示波器上显示出来,掌握测量周期、频率、峰峰值的方法;2)用导线将实验板的地信号与示波器的地信号相连,测量实验板上的Vcc电源信号是否正常。2.测试上电复位系统ACLK和SMCLK时钟频率,了解基本时钟模块控制寄存器各位作用。 新创建一个 MSP430G2553项目,在给出的 main.c基础上,编程输出单片机上

2、电复位后的ACLK和SMCLK时钟,用示波器测量其频率值,记录下来。答:上电复位后的ACLK时钟频率为32.77kHz 上电复位后的SMCLK时钟频率为1.04MHz程序见程序清单中的程序2.cCrystalJP8Sto 4图6-1图6-2思考:1)将实验板上JP8中间的两个插针接到:(1)32.768KH 晶振侧,如图 6-1;(2)P2.&P2.7 侧,如图 6-2。测得ACLK的结果有何不同?答:接到32.768KH晶振侧时,测得结果为32.77kHz,接到 P2.6/P2.7 侧,测得结果为 890kHz。2) 在debug下如图6-3,通过View/Register更改Sys

3、tem Clock模块控制寄存器值,分别置DIVA1、 DIVA0=01、11; DIVS1、DIVS0=10 11;置 LFXT1S0 LFXT1S0=00 10,记录示波器测量得到 的ACLK( P1.0输出)和SMCLK ( P1.4输出)的频率值,填写在表6-1、6-2、6-3中,掌握时钟模块各控制寄存器相关位的作用。口 BC5CT12 EC5CTL3-SEES=C-XT250 =DDIVMO-0IT2S1 -DDIVM1-0-SELMO0L SEKH1=FJRCACrT3 = OxOP LFXriOF = 0一 XT20F = 0-XC4PO = C-KC4P1 = C-DIVSU

4、= U DIV5X = D一 LFXriSO = I一 LFXri51 = QRegtatsS声Z Ckjck.SDCOCTL - 0x0 J 3BCSCTL1 = 0x2 0RCELO - 0ROEL1 - 0 RSEL2 0-RSKI.3 = 0k DTVAD = (1 DIVAl = 1-STS = 01- IT2OFF = 03BCSCTL3 = 0x00图6-3 通过View/Register更改System Clock模块控制寄存器值表 6-1 DIVAxx与 ACLK关系DIVA1DIVA0ACLK频率值作用0116.39kHzACLK二分频114.0963kHzACLK八分频表

5、 6-2 DIVSxx与 SMCLK关系DIVS1DIVS0SMCLK频率值作用1026.6kHzSMCLK四分频11133.0kHzSMCLK八分频表 6-3 LFXT1SX)与 ACLK关系LFXT1S1LFXT1S0ACLK频率值时钟来源0032.77kHz外部晶振1011.762kHzVLOCLK3)分析上电复位后,CPU工作的时钟信号 MCLK频率值是多少?答:根据上电复位后寄存器的值,可以发现上电复位后MCLK频率值实际上是与 SMCLK频率值相等的(时钟源均为 DCO,且均为一分频),而上电复位后测得的 SMCLK时钟频率为1.04MHz, 故上电复位后 MCLK频率值为1.04

6、MHz。4)(提高)置RSEL3RSEL0=111;1DCO2DCO0=111;记录当前 SMCLK的频率值。这是基本时钟模 块提供的最高频率值。答:SMLCK的值为 20.1MHz。3. 掌握基本时钟模块的编程控制参看附录A实验板原理图,如图 6-1用跳线将JP8中的插针信号接到晶振 32.768Khz侧。编程控 制基本时钟模块,设置 ACLK分别为下面时钟频率,并通过P1.0输出ACLK用示波器观察:1)ACLK=16.384Hz (外部晶振二分频,约为 32768Hz/2)答:ACLK的频率为32.77kHz。程序见程序清单中的程序3.1.C。2)ACLK=VLOCLK/;(内部 VLO

7、CLK八分频,约为 12KHz/3)答:ACLK的频率为1.4243kHz。程序见程序清单中的程序3.2.C。思考:可否通过对时钟模块编程在引脚P2.4上输出ACLK?为什么?答:不可以,因为引脚P2.4在硬件层面上并未与 ACLK的输出引脚相连,所以无论如何对时钟模 块进行编程都无法做到在引脚P2.4上输出ACLK4. DCO出厂校验值的频率检测1 )利用出厂校验值,编程使DCO分别为1MHz、16MHz,通过P1.4输出,并用示波器测量实际值。答:1MHz的实际值为 960kHz,16MHz的实际值为 15.9MHz。程序见程序清单中的程序4.1.C。2)(提高)在实验1例程test_25

8、53.c基础上,分别编程使主系统时钟工作在(1) MCLK =复位频率/8约100KHZ; (2) MCLK=DCO=16MHz 两种不同 MCLK频率下,观察灯的亮灭速度有何不 同,掌握主系统时钟的变化对程序执行速度的影响。答:在MCLK =复位频率/8时,灯的亮灭速度较慢,在MCLK=DCO=16MHz时,灯的亮灭速度较快。可见主系统时钟频率越高,程序执行的速度越快。程序见程序清单中的程序4.2.C。5. 低功耗模式学习程序L6_LPM.c见下,用跳线将 P2.3与L4短接,将P2.4用长杜邦线与 buzz短接,P1.1与K2短 接,用示波器分别观察 P1.0、P1.4输出的ACLK和SM

9、CLK 了解低功耗模式的进入和退出。1)运行程序,观察现象,并记录进入低功耗前、进入低功耗后、响应中断后、退出中断后的 时钟、发光二极管和蜂鸣器状态,并做分析。答:进入低功耗前:LED灯闪亮五次,随后蜂鸣器鸣响三次,ACLK=32.77kHz SMCLK=1.09MHz=进入低功耗后:LED灯不亮,蜂鸣器不响,ACLK与 SMCLK均无信号。响应中断后:LED灯不亮,蜂鸣器鸣响三次,ACLK=32.81kHz SMCLK=1MHz>退出中断后:LED灯不亮,蜂鸣器不响,ACLK与 SMCLK均无信号。发生以上现象的原因是在程序执行至LPM4前,程序正常执行,时钟有信号;程序执行至LPM4

10、后,单片机进入了 LPM4,CPU MCLK、SMCLK DCO均禁止,故程序不再向下执行,时钟无信 号;中断发生之后单片机被唤醒,恢复活动模式,中断子程开始执行,时钟有信号;在退出中 断之后单片机又回到了LPM4,故程序不再向下执行,时钟无信号。2)如果中断程序中有 LPM4_EXIT语句,运行的结果会有什么不同?请分析。答:在退出中断之后,LED闪亮五次,蜂鸣器不响,ACLK=32.77kHz SMCLK=1.06MHz随后LED灯不亮,蜂鸣器不响,ACLK与 SMCLK均无信号。因为中断子程中关闭了低功耗模式,所以中断子程结束之后单片机依旧为活动模式,所以LPM4;语句,程序继续向下执行

11、,时钟有信号。不过由于之后程序经过循环体的循环又执行了 故单片机又回到了 LPM4,故程序不再向下进行,时钟无信号。6. (提高)利用输出的时钟信号做中断源,实现定时功能将任务3中P1.0输出的ACLK=VLOCLK/时钟信号,作为 P1.7的中断申请信号,用导线将 P1.7 与P1.0相连即可,在中断函数中设置一个计数变量,计数中断函数被执行的次数,如果ACLK的频率值为1.5KHz(实验时,以实测的为准),那么中断函数每被执行 1500次表示一秒时间到。利用该定时功能,将 8个发光二级管设计成一个秒表,显示秒值,每秒改变一次8个发光二级管的显示。答:程序见程序清单中的程序6.1.C。思考:

12、如果要每隔5秒蜂鸣器响一声,如何在任务6的基础上编程实现?答:程序见程序清单中的程序6.2.C。程序清单:程序2.C#i nclude "io430.h" int mai n( void )/ Stop watchdog timer to preve nt time out reset WDTCTL = WDTPW + WDTHOLD;P1.0输出时钟 ACLK, P1.4输出时钟 SMCLKP1SEL |=BIT0+BIT4;P1SEL2 &=(BIT0+BIT4);P1DIR |=BIT0+BIT4;while(1);程序3.1.C#include "

13、io430.h"un sig ned int i;int mai n( void )/ Stop watchdog timer to preve nt time out reset WDTCTL = WDTPW + WDTHOLD;P1.0输出时钟 ACLK, P1.4输出时钟 SMCLKP1SEL |=BIT0+BIT4;P1SEL2 &=(BIT0+BIT4);P1DIR |=BIT0+BIT4;while(IFG1 & OFIFG)!=0)IFG1 &=OFIFG;for(i=0;i<=Oxffff;i+);BCSCTL3 |= LFXT1S_0;

14、BCSCTL1 |= DIVA_1;while(1);程序3.2.c#i nclude "io430.h" int mai n( void )/ Stop watchdog timer to preve nt time out reset WDTCTL = WDTPW + WDTHOLD;P1.0输出时钟 ACLK, P1.4输出时钟 SMCLKP1SEL |=BIT0+BIT4;P1SEL2 &=(BIT0+BIT4);P1DIR |=BIT0+BIT4;BCSCTL3 |= LFXT1S_2;BCSCTL1 |= DIVA_3;while(1);程序4.1.C#

15、include "io430.h"int mai n( void )/ Stop watchdog timer to preve nt time out reset WDTCTL = WDTPW + WDTHOLD;P1.0输出时钟 ACLK, P1.4输出时钟 SMCLKP1SEL |=BIT0+BIT4;P1SEL2 &=(BIT0+BIT4);P1DIR |=BIT0+BIT4;/ (1 )使 DCO为 1MHzif(CALBC1_1MHZ!= 0xff)BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MH Z;/ (2)使 DCO为 1

16、6MHz/*if(CALBC1_16MHZ!= 0xff)BCSCTL仁CALBC1_16MHZ;DC0CTL=CALDC0_16MH Z;*/while(1);程序4.2.C#include "io430.h"un sig ned int i;int mai n ( void )unsigned int j;/定义延时变量WDTCTL = WDTPW + WDTHOLD;/ (1) MCLK =复位频率/8/关闭看门狗BCSCTL2 |= DIVM_3;/ (2) MCLK=DCO=16MHz/*if(CALBC1_16MHZ!= Oxff)BCSCTL1=CALBC1_

17、16MHZ;DCOCTL=CALDCO_16MH Z; */P2SEL &=(BIT2+BIT5);P2SEL2 &=(BIT2+BIT5);P2OUT |=BIT2+BIT5;P2DIR |=BIT2+BIT5;/设置引脚P2.2和P2.5为基本输入输出功能/设置引脚P2.2和P2.5输出的初值为1II设置端口 P2.2和P2.5为输出方向for (;)II主循环P2OUT A=(BIT2+BIT5);II 将 P2.2 和 P2.5 的值取反后输出for (i=0;i<0xffff;i+); II 延时;程序 L6_LPM.c#include "io430.

18、h"#include "in430.h"void delay( un sig ned int i) / 延时函数unsigned int k;/定义局部变量for (k=0;k<i;k+);void Blink( )/LED 闪 un sig ned int i;for (i=0;i<5;i+) P2OUT &= BIT3;delay(OxeOOO);P2OUT |=BIT3;delay(OxeOOO);void Buzz( )/ 蜂鸣响 un sig ned int i;for (i=0;i<3;i+) P2OUT &= BIT

19、4;delay(0xf800);P2OUT |=BIT4;delay(0xf800);intmai n ( void ) WDTCTL = WDTPW + WDTHOLD; / 关闭看门狗/设置端口 P2.3输出,控制LED,P2.4输出,控制蜂鸣器P2SEL &=(BIT3+BIT4);P2SEL2 &=(BIT3+BIT4);P2OUT |= BIT3+BIT4;P2DIR |= BIT3+BIT4;/设置端口 P1.1允许中断P1SEL &=BIT1;P1SEL2 &=BIT1;P1REN |=BIT1;P1OUT |=BIT1;P1DIR &=B

20、IT1;P1IES |=BIT1;P1IFG &=BIT1;P1IE |=BIT1;_EINT();P1.0输出时钟 ACLK, P1.4输出时钟 SMCLKP1SEL |=BIT0+BIT4;P1SEL2 &=(BIT0+BIT4);P1DIR |=BIT0+BIT4;Bli nk();Buzz();for (;)/主循环LPM4; /Bli nk();#pragma vector=PORT1_VECTOR_in terruptvoid port_ISR() Buzz();P1IFG&=(BIT1);/ 清中断标志LPM4_EXIT;程序6.1.C#include &

21、quot;io430.h"#include "in430.h"int mai n( void )/ Stop watchdog timer to preve nt time out resetWDTCTL = WDTPW + WDTHOLD;P1.0输出时钟ACLKP1SEL |=BIT0;P1SEL2 &=BIT0;P1DIR |=BIT0;/设置输入输出P1SEL&=BIT7;P1SEL2&=BIT7;P1DIR&=BIT7;P1SEL &=BIT1;P1SEL2 &=BIT1;P1DIR |=BIT1;P10U

22、T |=BIT1;P2SEL = 0x00;P2SEL2 = 0x00;P2DIR = 0xff;/设置时钟BCSCTL3 |= LFXT1S_2;BCSCTL1 |= DIVA_3;/设置中断P1IES|=BIT7;P1IFG&=BIT7;P1IE|=BIT7;_EINT();LPM0;un sig ned int count = 0;un sig ned char num = 0;#pragma vector=PORT1_VECTOR/置 P1 中断向量_in terrupt void LED()coun t+;if(count=1424)/1424根据之前的实测值确定nu m+;P2OUT= num;coun t=0;P1IFG&=BIT7;程序6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论