This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430F6435:振荡器故障标志 OFIFG 始终为高电平

Guru**** 666710 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/612160/ccs-msp430f6435-oscillator-fault-flag-ofifg-always-high

器件型号:MSP430F6435

工具/软件:Code Composer Studio

我当前的代码有问题、无法检测时钟配置或 RTC_B 配置是否有问题 如果有人帮助解决这个问题,并强调我遗漏的部分,那将不胜感激。 我将提供初始化函数以供进一步参考

void vMspclock_init (void)
{
//-------
//常规设置
UCSCTL6 &=~(XT1OFF); //为 RTC_B 启用 XT1
UCSCTL6 &=~XT2OFF; //为 MCLK、SMCLK、ACLK 启用 XT2
UCSCTL3 |= SELREF_2; //对 FLL 的引用由 XT2给出
UCSCTL6 |= XT2DRIVE_3; //为32MHz 晶振选择高电流驱动容量和电流消耗
//UCSCTL7 //该寄存器用于检查振荡器故障标志,即如果由于电源条件而导致 osc 出现某些错误

//Init MCLK
UCSCTL4 |= SELM_5; //使用 XT2 (32MHz)晶体振荡器源
UCSCTL5 |= DIVM_5; //将时钟源除以32,即32/32 = 1kHz

//Init SMCLK
UCSCTL4 |= SELS _5; //////使用 XT2 (32MHz)晶体振荡器源
UCSCTL5 |= DIVS_0; //将时钟源除以1,即32/1 = 32kHz

//Init ACLK
UCSCTL4 |= SE拉美 经济体系5; //////使用 XT2 (32MHz)晶体振荡器源
UCSCTL5 |= DIV_3; //将时钟源除以8,例如32/8 = 4kHz
} 

RTC_B 初始化的函数是

空 init_rtc_b () //未使用预分频器
{

//设置时钟
UCSCTL6 &=~(XT1OFF); //用于 MCLK、SMCLK、ACLK 的32MHz 电容器
UCSCTL6 |= XCAP_3; //每个电容12pF 配置
while (BAKCTL 和 LOCKBAK) //解锁 XT1引脚以进行操作
BAKCTL &=~(LOCKBAK);
操作
{
UCSCTL7 &=~(XT1LFOFFG + DCOFFG);
//如果可能的故障会将这些寄存器设置为高电平、则清除 XT1、DCO 故障标志
SFRIFG1 &=~OFIFG; //清除振荡器故障标志
} while (SFRIFG1&OFIFG); //------------------------------------------- 代码卡在这里 

RTCCTL0 |= RTCAIE; //用于从低功耗模式唤醒的报警中断
//RTCAIFG 是中断寄存器

RTCCTL1 |= RTCHOLD; //禁用日历模式
RTCAMIN = 0x81;
RTCAHOUR = 0x00;

RTCHOUR = 0x5;//RTCHOUR = 0x5;
RTCMIN = 0x00;//RTCMIN = 0x00;
RTCSEC = 0x00;//RTCSEC = 0x00;
} 

更多信息

XT1为32.768kHz、XT2为32MHz

2.我正在使用 LPM3并在后续代码中报警中断。 谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    P7SEL.2呢?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    已添加

    P7SEL |= BIT2+BIT3;                      //端口选择 XT2

    开始时 vMspclock_init() function but still stuck in the same place in second loop

    谢谢

    Onkar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    硬件部门似乎存在一些故障。 嗯。 你指出的仍然是有用的。 谢谢你

    Onkar