×
嵌入式 > 技术百科 > 详情

MSP430F5438学习笔记 DCO倍频至8MHZ

发布时间:2022-05-24 发布时间:
|

1.平台说明 MS430F5438


  1. // 时钟默认情况  

  2. // FLL时钟      FLL选择 XT1  

  3. // 辅助时钟     ACLK选择 XT1          32768Hz  

  4. // 主系统时钟   MCLK选择 DCOCLKDIV    1048576Hz  

  5. // 子系统时钟   SMCLK选择 DCOCLKDIV   1048576Hz  

  6. #include   

  7. void clock_config(void);  

  8. void select_xt1(void);  

  9. void dco_config(void);  

  10.   

  11. int main(void)  

  12. {  

  13.     clock_config();                             // 初始化时钟  

  14.   

  15.     P4DIR |= BIT0;                              // P4.0输出  

  16.   

  17.     while(1)  

  18.     {  

  19.         P4OUT ^= BIT0;  

  20.         __delay_cycles(1000000);  

  21.     }  

  22. }  

  23.   

  24. void clock_config(void)  

  25. {  

  26.     WDTCTL = WDTPW + WDTHOLD;                   // 停止看门狗  

  27.     select_xt1();                               // 选择XT1  

  28.     dco_config();                               // ACLK = XT1 = 32.768K  

  29.                                                 // MCLK = SMCLK = 8000K  

  30. }  

  31.   

  32. void select_xt1(void)  

  33. {  

  34.     // 启动XT1  

  35.     P7SEL |= 0x03;                              // P7.0 P7.1 外设功能  

  36.     UCSCTL6 &= ~(XT1OFF);                       // XT1打开  

  37.     UCSCTL6 |= XCAP_3;                          // 内部电容  

  38.     do  

  39.     {  

  40.         UCSCTL7 &= ~XT1LFOFFG;                  // 清楚XT1错误标记  

  41.     }while (UCSCTL7&XT1LFOFFG);                 // 检测XT1错误标记  

  42. }  

  43.   

  44. void dco_config(void)  

  45. {  

  46.     __bis_SR_register(SCG0);                    // 禁止FLL功能  

  47.     UCSCTL0 = 0x0000;                           // Set lowest possible DCOx, MODx  

  48.     UCSCTL1 = DCORSEL_5;                        // DCO最大频率为16MHz  

  49.     UCSCTL2 = FLLD_1 + 243;                     // 设置DCO频率为8MHz  

  50.                                                 // MCLK = SMCLK= Fdcoclkdiv = (N+1)X(Ffllrefclk/n)  

  51.                                                 // N为唯一需要计算的值  

  52.                                                 // Ffllrefclk FLL参考时钟,默认为XT1  

  53.                                                 // n取默认值,此时为1  

  54.                                                 // (243 + 1) * 32768 = 8MHz  

  55.     __bic_SR_register(SCG0);                    // 使能FLL功能  

  56.   

  57.     // 必要延时  

  58.     __delay_cycles(250000);  

  59.   

  60.     // 清楚错误标志位  

  61.     do  

  62.     {  

  63.         UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);  

  64.                                                 // 清除所有振荡器错误标志位  

  65.         SFRIFG1 &= ~OFIFG;                      // 清除振荡器错误  

  66.     }while (SFRIFG1&OFIFG);                     // 等待清楚完成  

  67. }  



 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
三星研发基于risc-v架构的5G毫米波射频芯片