MSP系统时钟与低功耗教程分析.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
系统时钟(UCS) 时钟系统模块的概述 单片机的低功耗主要依靠间歇工作实现的,而间歇工作的方法就是启停系统时钟。 MSP430单片机系统时钟分为: MCLK、SMCLK、ACLK MCLK:主时钟,专为CPU运行提供的时钟。(主力) MCLK配置越高,CPU执行速度越快,但功耗也越高。在应用时,需要CPU运算的时间都很短,间歇开启MCLK的方法节能效果非常明显。 SMCLK:子系统时钟,专为一些需要高速时钟的片内外设提供服务。如:定时器、ADC (先头) ACLK:辅助时钟,频率很低,供给那些只需低频时钟的片内外设。如:LCD (哨兵) 时钟来源 低频振荡器。 高频振荡器 数控振荡器 CCS中建立Grace工程 新建CCS Project时,选择Empty Grace Project。 Grace的Basic User模式 Grace的Power User模式 数控振荡器DCO DCO是一个开环控制的振荡器,内置电阻,供选择频率范围 (RSELx共4位,16档),也就是RSELx管粗调。 DCOx对振荡频率进行分频(有3位,共8档,档位步进约10%) ,也就是DCOx负责细调。 低频振荡器VLO 内部集成了一个低频振荡器VLO,值是12kHz,频率受温度和 供电电压影响(范围4kHz~20kHz)。 一般用于对频率精度要求不高的场合。 MSP430G2553引脚图 举例 例1:将MSP430G2553的时钟设置为MCLK和SMCLK,且均为8MHz,ACLK设为32.768kHz。(芯片外接32.768kHz手表晶振) DCOCTL=CALDCO_8MHZ; BCSCTL1=CALBC1_8MHZ; 例2:将MSP430G2553的时钟设置为MCLK和SMCLK,且均为16MHz,ACLK为内部低频振荡器. DCOCTL=CALDCO_16MHZ; BCSCTL1=CALBC1_16MHZ; BCSCTL3|=LFXT1S1; 例3:将MSP430G2553的时钟设置为MCLK和SMCLK,且均为16MHz,ACLK设为32.768kHz且4分频。(芯片外接32.768kHz手表晶振) DCOCTL=CALDCO_16MHZ; BCSCTL1=CALBC1_16MHZ; BCSCTL1|=DIVA_2; 例4:将MSP430G2553的时钟设置:MCLK为4MHZ,SMCLK为2MHZ,ACLK设为32.768kHz.(芯片外接32.768kHz手表晶振) DCOCTL=CALDCO_8MHZ; BCSCTL1=CALBC1_8MHZ; BCSCTL2|=DIVM_1+DIVS_2; 例5:利用MSP430G2553开发板上P1.3的按键改变DCO频率的变化,随着DCO的改变,LED(P1.0)亮灭频率发生变化。 低功耗模式 工作模式 AM:活动模式,电流大约300μA LPM0 LPM1 LPM2 LPM3:哨兵警戒模式,电流不到1μA LPM0:主力休眠,先头部队工作 LPM3:主力和先头部队都休眠,仅留警戒哨兵 LPM4:当关机使用 系统时钟与低功耗 #include MSP430G2553.h void P1_IODect(); //P1口的外部中断事件检测函数 void P13_Onclick(); //P1.3按键的中断事件处理函数 void GPIO_Init(); //GPIO初始化函数 void main(void) { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗定时器 GPIO_Init(); //初始化GPIO _enable_interrupts(); //等同_EINT,使能总中断 while(1) { __delay_cycles(1000000); //与CPU时钟相关的长延时 P1OUT ^= BIT0; //LED亮灭状态改变 P1OUT ^= BIT6; //LED亮灭状态改变 } } void GPIO_Init() { //-----设定P1.0和P1.6的输出初始值----- P1DIR |= BIT0+BIT6; //设定P1.0为输出 P1OUT |= BIT0+BIT6; //设定P1.0初值 //-----配合机械按键,启用内

文档评论(0)

阿里山的姑娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档