打印
[MCU]

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

[复制链接]
756|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuhany|  楼主 | 2019-6-23 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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口

使用特权

评论回复
5
wuhany|  楼主 | 2019-6-23 16:40 | 只看该作者
因为4152没有XT2。。所以时钟源就只有LFXT1和DCO了,,然后系统默认的是1MHZ的DCO。。那我只要 IFG1 &= ~OFIFG;             // 清除振荡器失效标志
就可以转换成LFXT1吗?。。

使用特权

评论回复
6
jiajs| | 2019-6-23 16:43 | 只看该作者
有点难啊

使用特权

评论回复
7
characteristic| | 2019-6-28 15:45 | 只看该作者
正常按照手册配置就可以了啊

使用特权

评论回复
8
51xlf| | 2019-7-3 14:56 | 只看该作者
MSP430可以输出三种不同频率的时钟  

使用特权

评论回复
9
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关闭情况下也可进行处理。  

使用特权

评论回复
10
pmp| | 2019-7-3 14:57 | 只看该作者
MCLK时钟配置?           

使用特权

评论回复
11
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++);
       }  

使用特权

评论回复
12
lzbf| | 2019-7-3 14:58 | 只看该作者
好像只有一个外接晶振端口  

使用特权

评论回复
13
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;  

使用特权

评论回复
14
cemaj| | 2019-7-3 15:01 | 只看该作者
使用更高频率的外部晶振可以像用软件编写内部DCO振荡器分频  

使用特权

评论回复
15
updownq| | 2019-7-3 15:02 | 只看该作者
BCSCTL2 是时钟控制寄存器2  

使用特权

评论回复
16
sanfuzi| | 2019-7-3 15:02 | 只看该作者
DCO振荡器会自动被选作MCLK的时钟源  

使用特权

评论回复
17
cemaj| | 2019-7-3 15:02 | 只看该作者
BCSCTL2|=SELM_3;//主时钟8分频MSP430频率(时钟)  

使用特权

评论回复
18
51xlf| | 2019-7-3 15:02 | 只看该作者
ACLK(辅助时钟),MCLK(主系统时钟),SMCLK(子系统时钟),以供给不同时钟的模块  

使用特权

评论回复
19
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);
}   

使用特权

评论回复
20
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

粉丝