工具/软件:Code Composer Studio
使用具有两个晶体的MSP430FG6626时,我在启动XT1CLK时遇到问题,这使我无法使用RTC_B
XT2CLK已正确初始化,并分别以16 MHz和8 MHz驱动MCLK和SMCLK。
虽然我不打算使用ACLK和FLL,但我已将它们配置为由REFOCLK驱动。
时钟设置
静态WORD16调试;
静态WORD32 smclkVal;
静态WORD32 mclkVal;
////
初始化
//
调试=0;
////
端口选择XT2
//
GPIO初始化_setAsPeripheralModuleFunctionInputPin (GPIO_PORT_P7, Periph_in_PORT7;PM_Peripheral_PVM/ PM_1级;PH_PH_PHCO_PVM_1;PHCOSE_PH_PH_PHCOME_PHCOSE_PHOR_PHOR_PHOR_PHY/ PM20 XT1和XT2
//
UCS_setExternalClockSource(3.2768万, 1600万);
////
ACLK和参考时钟(不会使用)
//
UCS_initClockSignal (UCS_ACLK, UCS_REFCLK_SELECT, UCS_Clock_divuler_1);Initialize
initClockSignal (UCS_FLF, UCS_FLK, UCS_Clock_diverer_1);
//
时钟故障初始化
//
UCS_clearFaultFlag (UCS_XT1LFOFFG | UCS_XT1FOFFG | UCS_XT2OFFG);
//
打开XT1
//
if (!UCS_TRENONLFFXT1Timeout (INIT_XT1_DRIVE_3,UCS_XT1_TIMEOUT
){UCS_XT1/UCS_XCAP_3/ WHAT_3_FILEXT1/
//***************
//***************
//***************
//始终出现超时
//***************
//***************
//***************
//***************
//处理错误案例
debug++;
}////
初始化XT2 (8MHz至16MHz操作范围)
//
if (!initdiver_turnOnXT2WithTimeout (UCS_XT2_DRIVE_8MHZ_16MHz,XT2_INIT_TIMEOUT)
{//
处理错误案例
debug++;
}////
配置MCLK和SMCLClockClockClockClock UCS_TC_16,
UCS_16时钟UCS_16时钟,UCS_16时
钟UCS_16时钟,UCS_16时钟,UCS_16时钟时钟时钟,UCS_TC_16时钟
时钟时钟 UCS_Clock_diverer_2);
////
启用全局振荡器故障标志
//
SFR_DisableInterrupt (SFR_stockator_fault_interrupt (SFR_scrator_fault_interrupt
);
//toto
:NMI时钟无错误//SFR_enableInterrupt (SFR_stock_fault_interrupt );UCS_val =/getkklk/= uCS_val;UCS_getkval =/kkklkk/kval =
IF (mclkVal != XT2_FREQ)
{
DEBUG++;
}
IF (aclkVal != 3.2768万)
{
DEBUG+;
}
UCS_TRENONLFXT1WithTimeout()似乎总是超时,因为5万 (可能更高)的超时值将不起作用。
相反,使用UCS_turnOnLFXT1()将导致无限循环(不会退出函数调用)。 尝试不同的DRIVE_X和CAP_X设置会导致相同的结果。
如果能就此问题提供任何帮助,我将不胜感激。