请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F6659 我想将我的 MSP430F6659的时钟(MCLK 和 SMCLK)设置为19.2MHz、并使用内部修整的32768时钟作为 DCO 的基准输入、但当我尝试设置它时、它会失败。 我知道勘误表中的振荡器故障标志问题、但即使避免了这种情况、我似乎也无法将时钟设置为此级别。 我使用了 MSP430 Ware 驱动程序和直接注册表操作。 这是可能的、如果是、您能找到我的错误吗?
无符号长时钟值= 0; #define UCS_MCLK_NEW_FREQUENCY IN_kHz 19202 #define UCS_MCLK_FLLREF_Ratio 586//MCLK/FLLRef 比率 PMM_setVCore (PMM_CORE_LEVEL_3); UCS_initClockSignal (UCS_FLLREF、UCS_REFOCLK_SELECT、UCS_CLOCK _DIVIDER_1);//设置 DCO FLL 基准= REFO UCS_initClockSignal (UCS_ACLK、UCS_REFOCLK_select、UCS_Clock_divider); //set ACLK = REFO UCS_initFLSettle (UCS_MCLK_frequence_in_kHz、UCS_MCLK_FLLREF_Ratio);//设置比率和所需的 MCLK 频率并初始化 DCO DO{ //-------------------- 循环直到 XT1、XT2和 DCO 故障标志被清除--- UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG); //步骤2.1:清除 XT2、XT1、DCO 故障标志 SFRIFG1 &=~OFIFG; //步骤2.2:清除振荡器故障标志 } while (SFRIFG1&OFIFG); //步骤1.3:测试振荡器故障标志是否已重新启用 SFR_clearInterrupt (SFR_Oscillator_FAULT_INTERRUPT); //启用全局振荡器故障标志 // SFR_enableInterrupt (SFR_oscillator_FAULT_INTERRUPT); clockValue = UCS_getSMCLK(); clockValue = UCS_getMCLK (); clockValue = UCS_getACLK ();
虽然时钟值被报告为19.2、但是实际产生的时钟值要低得多。