}
intmain(void)
{
WDTCTL=WDTPW+WDTHOLD;
//关闭看门狗
__disable_interrupt();
〃_DINT();
禁止总中断
P2SEL=0;
//置P2为基本
I/O功能
P2SEL2=0;
//
P2OUT=0xFF;
//置P2输出的初值
P2DIR=0xFF;
//置P2为输出方向
P1SEL&=BIT2;P1SEL2&=BIT2;
P1OUT|=BIT2;;
P1REN|=BIT2;
P1DIR&=~BIT2;
P1IES|=BIT2;
P1IFG&=~BIT2;
P1IE|=BIT2;
__enable」nterrupt();
〃_EINT();
总中断运行
}
while
(1){};
#pragmavector=PORT1_VECTOR__interruptvoidport_int(void)
{unsignedinti;
for(i=0;i<3;i++)
{delay();
}
if((P1IFG&BIT2)!
=0)
{number++;
P2OUT=~number;
}
P1IFG&=~BIT2;
}
实验名称:
实验7:
基本时钟和低功耗模式
姓名:
袁鹏学号:
2013011780
实验班号:
33机器号:
42
1.实验目的
1.了解MSP430Gxxx基本时钟模块的工作原理,掌握其控制方法;
2.掌握利用时钟信号和中断技术实现定时功能的方法;
3.掌握低功耗模式控制方法
2.实验任务
1.数字示波器的使用
(1).用示波器测得信号源的周期T=20us、频率f=1.000KHZ、峰峰值V=3.12V。
(2).测得实验板上Vcc信号正常,Vccmax=3.76V,Vccmin=3.52V,Vccavg=3.66V。
2.测试上电复位系统的ACLK、和SMCLK时钟频率
输出的ACLK频率为F(ACLK)=32.79KHZ,SMCLK勺频率为F(SMCLK)=1.031MHZ代码如下:
#include"io430.h"
intmain(void)
{
//Stopwatchdogtimertopreventtimeoutreset
WDTCTL=WDTPW+WDTHOLD;
P1SEL|=BIT0;〃P1.0输出ACLK
P1SEL2&=~BIT0;
P1DIR|=BIT0;
P1SEL|=BIT4;〃P1.4输出SMCLK
P1SEL2&=~BIT4;
P1DIR|=BIT4;
while
(1);
}
思考:
上电复位后,CPU工作的时钟信号MCLK频率值是多少?
上电复位后,通过查看基本时钟模块相关寄存器,可知MCLK的时钟源为DCOSMCLK勺时钟
源也为DCO,因此通过测量上面复位后的SMCLK频率可知MCLK的频率,由上述可知
F(MCLK)=1.031.MHZ。
3.掌握基本时钟模块的编程控制
参看附录A实验板原理图,用跳线将JP8中的插针信号接到晶振32.768Khz侧,使晶振
与单片机的P2.6和P2.7相连。
编程控制基本时钟模块,设置ACLK分别为下面时钟频
率,并通过P1.0输出ACLK用示波器观察:
(1).ACLK=4096Hz(时钟源外部晶振,32768Hz/8)
观察的F(ACLK)=4.098KHZ。
具体代码如下:
#include"io430.h"
intmain(void)
{
//StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;
P1SEL|=BIT0;//设置P1.0输出ACLK
P1SEL2&=~BIT0;
P1DIR|=BIT0;
P2SEL|=BIT6;//设置P2.6、P2.7连接外部晶振引脚
P2SEL2&=~BIT6;
P2DIR&=~BIT6;//P2.6XIN输入
P2SEL|=BIT7;
P2SEL2&=~BIT7;P2DIR|=BIT7;//P2.7XOU输出
BCSCTL1|=DIVA_3;//设置ACLK为8分频
while
(1);
}
(2).ACLK=3KHz;(时钟源VLOCLK,12KHz/4)观察的F(ACLK)=3.165KHZ。
具体代码如下:
#include"io430.h"
intmain(void)
{
//StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;
P1SEL|=BIT0;//设置P1.0输出ACLK
P1SEL2&=~BIT0;
P1DIR|=BIT0;
BCSCTL1|=DIVA_2;//设置ACLK时钟源为VLOCLK并为4分频
BCSCTL3|=LFXT1S_2;
while
(1);
}
思考:
可否编程在引脚P2.0上输出ACLK?
为什么?
不可以,因为根据说明指导书MSP430G2553的辅助时钟ACLK是由P1.0输出的,内部硬件电路设计结构决定了不能用P2.0输出ACLK
反思:
LFXT1CLK是由32.768KHZ低频振荡器控制的,因此比较精确,示波器测量的精确值和理论值相差不大。
而VLOCLK是由片内低功耗低频振荡器控制的,受环境温度和工作电压影响较大,因此测量值和理论值相差较大。
4.DCO出厂校验值的频率检测
(1)利用出厂校验值,编程使DCO分别为1MHz8MHz12MHz16MHz通过P1.4
输出,用示波器测量实际值。
出厂校验值为1MHZ时,F实际=0.992MHZ。
出厂校验值为8MHZ时,F实际=8.197MHZ出厂校验值为12MHZ时,F实际=12.05MH乙出厂校验值为16MHZ时,F实际=16.39MHZ。
具体代码如下:
#include"io430.h"
intmain(void