工具与软件:
大家好!
我们正在尝试在使用16MHz 陶瓷振荡器(ABM8AAIG-16.00MHZ-V2R-T3)的定制电路板中使用 MSP430FR5969。 我们正在尝试将 HFXT 振荡器配置为时钟源、
我们已经参考了提供的示例代码并遵循了相同的代码、但代码最后停留在循环中
问题: OFIFG 位从未复位。 该位是一个振荡器故障标志、必须先清除该标志、然后再次进行检查、但在每次清除后会设置该标志。
测试: 我们在完成时钟切换后检查 SMCLK 时钟、以验证是否发生了切换。 因此、我们已将引脚 P3.4设置为 SMCLK。
如果删除 loop condition and test、程序将运行。 为了进行检查、我们实施了 PWM 并将其运行了8000个计数的50%占空比。 如果我们计算一个 CRO 上可用的实际频率、我们得到大约5MHz。
我们正在执行的代码/配置:
void main()
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
PM5CTL0 &=~μ H LOCKLPM5;//禁用高阻抗
P3DIR |= BIT4; //输出 SMCLK
P3SEL1 |= BIT4; //SMCLK 功能选择
PJSEL0 |= BIT6 | BIT7; //对于 HFXT
FRCTL0 = FRCTLPW | NACCESS_1; //如果 clk 大于8MHz、则 FRAM 处于等待状态
CSCTL0_H = CSKEY >> 8; //解锁 CS 寄存器
CSCTL1 = DCOFSEL_6; //将 DCO 设置为8MHz
CSCTL2 = SELA__LFXTCLK | SELS_HFXTCLK | SELM__HFXTCLK;
CSCTL3 = 0; //将所有分频器设置为1
CSCTL4 = HFXTDRIVE_3 | HFFREQ_3; //提供最大驱动和频率范围16-24
MHz
应执行的操作
{
CSCTL5 &=~(HFXTOFFG); //清除 XT1和 XT2故障标志
SFRIFG1 &=~OFIFG;
—while (SFRIFG1&OFIFG); //测试振荡器故障标志
CSCTL0_H = 0; //锁定 CS
while (1)
{
;
}
}
任何建议都是非常感谢的
谢谢你