[MCU] 请问下MS430F412的时钟初始化配置是怎么样的?

[复制链接]
1218|25
 楼主| wuhany 发表于 2019-6-23 16:25 | 显示全部楼层 |阅读模式
请问下MS430F412的时钟初始化配置是怎么样的?
jiahy 发表于 2019-6-23 16:29 | 显示全部楼层
楼主详细说说怎么回事啊,这么说太笼统了
 楼主| wuhany 发表于 2019-6-23 16:33 | 显示全部楼层

好像只有一个外接晶振端口。。没有XT2。。看了下4152TI的例程,不怎么明白。

//******************************************************************************
//  MSP430x41x2 Demo - FLL+, Output Buffered SMCLK, ACLK
//
//  Description: Buffer ACLK on P1.6 and MCLK(DCO) on P1.1.
//  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCO
//  //* External watch crystal on XIN XOUT is required for ACLK *//
//
//                MSP430x41x2
//             -----------------
//         /|\|              XIN|-
//          | |                 | 32kHz
//          --|RST          XOUT|-
//            |                 |
//            |             P1.6|-->ACLK = 32kHz
//            |                 |
//            |             P1.1|-->MCLK = DCO
//            |                 |
//
//  P. Thanigai
//  Texas Instruments Inc.
//  January 2009
//  Built with CCE Version: 3.1 and IAR Embedded Workbench Version: 4.11
//******************************************************************************
#include "msp430x41x2.h"
void main(void)
{
   volatile unsigned int i;                  // Use volatile to prevent removal
                                             // by compiler optimization
   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
   FLL_CTL0 |= XCAP14PF;                     // Configure load caps
   for (i = 0; i < 10000; i++);              // Delay for 32 kHz crystal to
                                             // stabilize
   do
   {
     IFG1 &= ~OFIFG;                         // Clear osc fault flag
     for (i = 0; i < 1000; i++);             // Delay for osc to stabilize
   } while(IFG1 & OFIFG);                    // Check to see if osc flag is set

  P1DIR = BIT1+BIT6;                        // Set P1.6,1 as outputs
   P1SEL = BIT1+BIT6;                        // Select P1.6,1 as clk option
   while(1);                                 // Loop in place
}
lizye 发表于 2019-6-23 16:37 | 显示全部楼层
根据你的晶振大小和类型,设置P1口
 楼主| wuhany 发表于 2019-6-23 16:40 | 显示全部楼层
因为4152没有XT2。。所以时钟源就只有LFXT1和DCO了,,然后系统默认的是1MHZ的DCO。。那我只要 IFG1 &= ~OFIFG;             // 清除振荡器失效标志
就可以转换成LFXT1吗?。。
jiajs 发表于 2019-6-23 16:43 | 显示全部楼层
有点难啊
characteristic 发表于 2019-6-28 15:45 | 显示全部楼层
正常按照手册配置就可以了啊
51xlf 发表于 2019-7-3 14:56 | 显示全部楼层
MSP430可以输出三种不同频率的时钟  
i1mcu 发表于 2019-7-3 14:56 | 显示全部楼层
LFXT1CLK: 低频时钟源 默认工作在 32768HZ  也可通过外接高频晶振(450K~8MHZ)工作在高频这时需要接电容。
XT2CLK:     高频时钟源
DCOCLK:   数字控制RC振荡器
ACLK:由LFXT1CLK经过1,2,4,8分频的到,一般用于低速外设
MCLK:可由软件选择 LFXT1CLK,XT2CLK,DCOCLK   1,2,4,8分频得到用于CPU和系统
SMCLK:可由软件选择LFXT1CLK和DCOCLK,或者XT2CLK与DCOCLK(由具体器件决定)分频得到,用于高速外设
LFXT1发生有效PU信号之后开始工作,一次有效地PUC信号可以讲SR中的OscOff复位,允许LFXT1工作,如果LFXT1CLK没有用作MCLK和SMCLK,可将OscOff置位来禁止工作。
XT2CLK 如果没有用作MCLK和SMCLK,可通过控制位XT2OFF来关闭。
DCOCLK:当两个外部振荡器失效时DCO振荡器会被自动选择为MCLK时钟,由振荡器失效引起的NMI中断请求可以得到响应,在CPU关闭情况下也可进行处理。  
pmp 发表于 2019-7-3 14:57 | 显示全部楼层
MCLK时钟配置?           
1988020566 发表于 2019-7-3 14:58 | 显示全部楼层
DCOCTL = DCO0 + DCO1 ;                   // Max DCO
      BCSCTL1 = RSEL0 + RSEL1;                 // XT2on(第一位赋值0), max RSEL
      BCSCTL2 = SELM1;                         // MCLK = XT2 ,SMCLK = DCO
      //BCSCTL2 |= SELS;                        // SMCLK = XT2
      P5DIR |= 0x70;                            // P5.6,5,4 outputs
      P5SEL |= 0x70;                            // P5.6,5,5 options,引脚的复用功能
      while ((IFG1 & OFIFG) == OFIFG)           //等待XT2启振
      {
          IFG1 &= ~OFIFG;                         //clear OFIFG, which is preset
          for (i=0;i<200;i++);
       }  
lzbf 发表于 2019-7-3 14:58 | 显示全部楼层
好像只有一个外接晶振端口  
youtome 发表于 2019-7-3 15:00 | 显示全部楼层
/DIVA1,0=0:ACLK divider number=1
//XTS=0:LFXT1 low Freq. XT2OFF=0:XT2 Oscilator ON,XT5V=0: should always be reset
/*BCSCTL1 = DIVA_0 + RSEL2 + RSEL1 + RSEL0;//0Xx87;;
BCSCTL1 &=~ (XT2OFF + XTS + XT5V);
//SELM1,0=2:MCLK source select DCOCLK, DIVM1,0=0:MCLK divider number=1,
//SELS=0: SMCLK resource select XT2CLK, DEIS1,0=0:SMCLK divider number=1
//DCOR=0: Internal resistor enable(DCO start)
BCSCTL2 = SELS + DIVS_0 + SELM_0 + DIVM_0;//0x08;  
cemaj 发表于 2019-7-3 15:01 | 显示全部楼层
使用更高频率的外部晶振可以像用软件编写内部DCO振荡器分频  
updownq 发表于 2019-7-3 15:02 | 显示全部楼层
BCSCTL2 是时钟控制寄存器2  
sanfuzi 发表于 2019-7-3 15:02 | 显示全部楼层
DCO振荡器会自动被选作MCLK的时钟源  
cemaj 发表于 2019-7-3 15:02 | 显示全部楼层
BCSCTL2|=SELM_3;//主时钟8分频MSP430频率(时钟)  
51xlf 发表于 2019-7-3 15:02 | 显示全部楼层
ACLK(辅助时钟),MCLK(主系统时钟),SMCLK(子系统时钟),以供给不同时钟的模块  
youtome 发表于 2019-7-3 15:02 | 显示全部楼层
while (SFRIFG1 & OFIFG)                                  // 等待时钟系统正常工作
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);              //清各时钟出错标志位
SFRIFG1 &= ~OFIFG;                               //清总时钟标志位
//for(i = 0; i <100; i++);
__delay_cycles(6000);
}   
i1mcu 发表于 2019-7-3 15:02 | 显示全部楼层
BCSCTL1 &=~ XT2OFF;        //开启XT2   
do
  {
    IFG1 &=~ OFIFG          //清除振荡器失效标志
    for(i = 0xFF; i> 0; i--);   
  }while((IFG1 & OFIFG) != 0); //如果失败标志任然存在
  
  BCSCTL2 |= SELM1;            //MCLK = XT2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部