请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR5729 我尝试将时钟方案配置为:“Crystal 振荡器20MHz -> XTAL1 -> SMCLK”。 分隔器 I 设置为4。
下面是我配置时钟和晶体连接方案的代码。 我预计 SMCLK 输出引脚(PJ.0)的频率为5 MHz,但结果是1.22 MHz。 我不明白为什么,非常希望得到建议,为什么会这么做。
#include <msp430.h> #ifndef __DATATYPES_H__ #define __DATATYPES_H__ typedef char int8_t; typedef unsigned char uint8_t; typedef int int16_t; typedef unsigned int uint16_t; typedef long int32_t; typedef unsigned long uint32_t; typedef uint8_t BYTE; #endif /** * main.c */ inline void __ClkConf(void); int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer __ClkConf(); while(1) { } return 0; } inline void __ClkConf(void) { uint16_t temp; PJSEL0 |= BIT0; PJSEL1 &= ~((uint16_t)BIT0); PJDIR |= BIT0 + BIT4 + BIT5; PJOUT |= BIT0 + BIT4 + BIT5; PJSEL0 |= BIT4 + BIT5; // connect pins to xtal; CSCTL0_H = 0xA5; CSCTL1 |= DCOFSEL0 + DCOFSEL1; // Set max. DCO setting CSCTL2 = SELA_3 + SELS_0 + SELM_3; // set ACLK = MCLK = DCO; SMCLK = XTAL1 CSCTL3 = DIVA_0 + DIVS_2 + DIVM_0; // set all dividers temp = CSCTL4; temp |= XTS; temp &= ~(XT1OFF); CSCTL4 = temp; }