2291|4

120

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

提问+MSP430F5438XT1的驱动问题 [复制链接]

本帖最后由 qinkaiabc 于 2014-3-8 02:46 编辑

/*************************************************
** 版权:   杭州利尔达科技有限公司
** 文件名: LSD-TEST430F5438-PMM1.c
** 版本:  IAR  4.11B
** 工作环境:
** 作者:   
** 生成日期:
** 功能:   利用PMM改变内核电压VCORE,在系统默认情况下,内核电压VCORE是1.4V,但在
//       很多情况下需要增加内核电压,因此需要调节内核电压。本程序通过调节内核电压,
//      从1.4V增加到1.8V. SVSML监控电压从1.34v增加到1.54v.SMCLK =8M,MCLK = 16M,ACLK = 32768
//     
//                 MSP430x5438
//             -----------------
//         /|\|                 |
//          | |                 |
//          --|RST              |
//            |                 |
//            |             P1.0|-->LED
** 相关文件:
** 修改日志
**相关说明:   注意;1.时钟要能正常的工作,不会出现时钟失效,或者RERO 替代XT1 作为DCO 参考源
                    2.由于时钟频率大于12M因此需要调节VCORE来配合高速频率的要求。
*************************************************************/
#include "msp430x54x.h"

void Init_System(void);
void Init_PMM(void);
void Init_Clk(void);
void main(void)
{
     WDTCTL = WDTPW + WDTHOLD;                               // 关看门狗  
     Init_System();                                          // 系统初始化
     while(1)
     {
          P1OUT ^= BIT0;                                     // LED 闪烁
          for( unsigned int i = 0;i < 65000;i++);            // 延迟
     }

}

/*************************************************
  函数(模块)名称:void Init_System(void)
  功能:  该程序系统初始化
  本函数(模块)调用的函数(模块)清单:
  调用本函数(模块)的函数(模块)清单:
  输入参数:          void                          
  输出参数:           void
函数返回值说明 :void               
  使用的资源                    
  其它说明:                       
*************************************************/
void Init_System(void)
{
     P1DIR |= BIT0;                                          //打开LED
     P1OUT |= BIT0;
     P11SEL|= BIT1 + BIT0 + BIT2;                            //SMCLK MCLK ACLK 设置为输出
     P11DIR|= BIT1 + BIT0 + BIT2;
     Init_PMM();                                             //PMM配置函数
     Init_Clk();                                             //时钟配置函数

}

/*************************************************
  函数(模块)名称:void Init_PMM(void)
  功能:   F5XX 电源管理初始化
  本函数(模块)调用的函数(模块)清单:
  调用本函数(模块)的函数(模块)清单:
  输入参数:          void                              
  输出参数:           void
函数返回值说明 :void               
  使用的资源                    
  其它说明:      注意: SVSMLRRLX ,PMMCOREVX                  
*************************************************/

void Init_PMM(void)
{

     PMMCTL0_H = 0xA5;                             //开PMM电源管理                             
     SVSMLCTL |= SVSMLRRL_1 + SVMLE;              //配置SVML电压
     PMMCTL0 =  PMMPW + PMMCOREV_2;               //配置内核电压VCORE
     while((PMMIFG & SVSMLDLYIFG ) == 0);         //等待设置完成
     PMMIFG &= ~(SVMLVLRIFG + SVMLIFG + SVSMLDLYIFG);//清零是为了等待置位,
     if((PMMIFG & SVMLIFG) == 1)            
       //判断内核电压是否上升到SVML,当VCORE持续小于SVML的设定值,
       //且SVMLIFG被清零,则SVMLIFG立即由硬件置位
     while((PMMIFG & SVMLVLRIFG) == 0);
     //如果没有达到SVML,则等待,VCORE值升高到SVML值以上时,
     //标志位SVMLVLRIFG就置位
     SVSMLCTL &= ~SVMLE;                               //关掉SVML模块
     PMMCTL0_H = 0X00;                                //锁存配置
}
/*************************************************
  函数(模块)名称:void Init_Clk(void)
  功能:  F5XX 单片机时钟初始化-16MHZ
  本函数(模块)调用的函数(模块)清单:
  调用本函数(模块)的函数(模块)清单:
  输入参数:           void                              
  输出参数:            void
  函数返回值说明 :void               
  使用的资源                    
  其它说明:     注意 : DCORSELX , P7SEL ,XT1DRIVER                  
*************************************************/

void Init_Clk(void)
{
     P7SEL |= 0x03;                                                // XT1起振
     UCSCTL1 = DCORSEL_6;                                          // 选择DCO的范围
     UCSCTL2 |= 240;                                               //设置DCO频率为16M
     UCSCTL4 = SELM_3 + SELA_0 + SELS_4;                           // 设置 MCLK = DCOC,MCLK =DCO,ACLK=XT1
     while (SFRIFG1 & OFIFG)                                       //清除 OFIFG,and  XT1OFFG ,DCOFFG
     {
          UCSCTL7 &= ~(  XT1LFOFFG + DCOFFG);
          SFRIFG1 &= ~OFIFG;
     }        
}
P7与XT1的起振有什么关系吗??     P7SEL |= 0x03;  若没有这句指令,LED不闪烁??为什么呢?可以解释一下么谢谢!!!

最新回复

UCSCTL2 |= 240;   //设置DCO频率为16M 2*(240+1)*32.768=15.794176MHZ    详情 回复 发表于 2014-3-8 10:48
 
点赞 关注

回复
举报

2781

帖子

419

TA的资源

五彩晶圆(中级)

沙发
 
XT1接的是外部低速时钟32.768Khz。MCU也是像人一样也是需要心脏的。XT1就相当于心脏给单片机提供时钟。

你把 P7SEL |= 0x03;给注释掉了,MCU不就不运行了么
 
个人签名
 

回复

2781

帖子

419

TA的资源

五彩晶圆(中级)

板凳
 
UCSCTL2 |= 240;   //设置DCO频率为16M

2*(240+1)*32.768=15.794176MHZ  
 
个人签名
 
 

回复

120

帖子

0

TA的资源

一粒金砂(中级)

4
 
LED不闪烁,但是示波器测的MCLK/SMCLK/ACLK均不为0!!
 
 
 

回复

120

帖子

0

TA的资源

一粒金砂(中级)

5
 
以前应用XT1也没有去设置P7SEL=0X03
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表