打印

MSP430主系统时钟以及430的低功耗设置

[复制链接]
493|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如何将系统时钟设置到外部高频晶体振荡器,430的MCLK默认的是DCO的,如何安全的从DCO切换到外部晶体振荡器,这是一个很重要的步骤,因为经过此步骤,可以极大地提高430的处理能力,DCO在内部,可以为cpu提供强劲稳定的时钟
[url=][/url]
#include <msp430x14x.h>void  main( void ){  // Stop watchdog timer to prevent time out reset  WDTCTL = WDTPW + WDTHOLD;     volatile unsigned int i;  P5DIR |=BIT4;//设置P5.4为输出  P5SEL |=BIT4;//设置片内主系统时钟的输出   //由这段代码设置如何将DCO切换到高频晶体振荡器  BCSCTL1 &=~XT2OFF;//~0x80  do  {      IFG1 &=~OFIFG;//OFIFG为1表示外部晶体振荡器失效      for(i = 0xff;i>0;i--);//IFG1是Interrupt Flag 1  }  while((IFG1 & OFIFG));//表示振荡器已经起振  BCSCTL2 |= SELM_2;//#define SELM_2  (0x80)   /* MCLK Source Select 2: XT2CLK/LFXTCLK */    while(1); }[url=][/url]


低功耗模式的设置:
msp430内部有4种低功耗模式,在进入低功耗模式的时候,cpu停止,一般是由外部事件的响应才能唤醒cpu
由于IAR软件比较给力,所以进入低功耗模式的常用格式
比如:
进入低功耗模式2:LPM2;
退出低功耗模式2:LPM2_EXIT;
开启外部中断:_EINT():
关闭外部中断:_DINIT();
430外部中断的模式
[url=][/url]
#include <msp430x14x.h> main( void ){  BCSCTL1 |=DIVA_2;//(0x20) /* ACLK Divider 2: /4 */  WDTCTL = WDT_ADLY_1000;//直接将看门狗定时器变成定时器,定时时间是1000毫秒  IE1 =WDTIE;//打开定时器中断   P2DIR |= BIT3;   while(1)  {     unsigned int i;     _BIS_SR(LPM3_bits +GIE);//进入低功耗模式3,这种时候,cpu停止工作,同时打开总的中断     //_BIS_SR是一个本增函数,     //_BIS_SR()是一个本增函数,通过本函数可以对寄存器进行直接的操作    //这句话等价于_EINT();    // LPM3;          P2OUT &=~BIT3;//相当于把第五位输出0     for(i = 180000;i>0;i--);//延时     P2OUT |= BIT3;//p3.5输出1  }  }#pragma vector =WDT_VECTOR__interrupt void watchdag_timer(void){    //__BIC_SR_IRQ(LPM3_bits);//从中断中,将低功耗模式退出,将cpu从睡眠模式唤醒    LPM3_EXIT;//退出低功耗模式}[url=][/url]


版权所有,转载请注明链接地址:http://www.cnblogs.com/fengdashen/p/3404759.html

相关帖子

沙发
shenmu2012| | 2019-2-17 20:23 | 只看该作者
LPM3低功耗模式时常用的设计

使用特权

评论回复
板凳
firstblood| | 2019-2-17 22:26 | 只看该作者
这个是根据MCU的相关IO口设计的启动对应的低功耗模式的

使用特权

评论回复
地板
firstblood| | 2019-2-17 22:27 | 只看该作者
这个总共是5种低功耗模式设计的,根据实际的设计需要的,我们一般采用低功耗模式3的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

26

帖子

0

粉丝