您好!
我复制了 code composer 中的一个文件、该文件的标题为 msp430fr59xx_cs_05.c、该文件在 LFXT 输入端采用外部32.768kHz 时钟。
我唯一修改的是从 LFXT 更改为 HFXT、如下面的代码所示。 我仍然无法在输出上看到正确的时钟(I routed SMCLK)。 我注入 HFXT 输入的输入时钟似乎根本不会影响输出。 您能告诉我可能做错了什么吗?
谢谢!
#包含
int main (空)
{
WDTCTL = WDTPW | WDTHOLD; //停止 WDT
//配置 GPIO
P1DIR |= BIT2 | BIT3; // P1.2和 P1.3输出
P1SEL0 |= BIT2 | BIT3; // P1.2和 P1.3选项选择
PJSEL0 |= BIT6; //表示 HFCLK
PJSEL1 &=~BIT6; //表示 HFCLK
P3DIR |= BIT4;
P3SEL0 |= BIT4; //输出 SMCLK
P3SEL1 |= BIT4;
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~μ A LOCKLPM5;
CSCTL0_H = CSKEY >> 8; //解锁 CS 寄存器
CSCTL1 = DCOFSEL_6; //将 DCO 设置为8MHz
CSCTL2 = SELM__VLOCLK | SELS__HFXTCLK | SELM__DCOCLK;//设置 ACLK = VLO;SMCLK = HFXTCLK
CSCTL3 = DIVA_8 | DIVS__1 | DIVM__8; //设置所有分频器
CSCTL0_H = 0;
CSCTL4 = HFXTBYPASS | HFXTOFF;
正确
{
CSCTL5 &=~HFXTOFFG; //清除 XT1和 XT2故障标志
SFRIFG1 &=~OFIFG;
—while (SFRIFG1&OFIFG); //测试振荡器的故障标志
//现在 osc 正在运行,请启用故障中断
SFRIE1 |= OFIE;
_ bis_SR_register (LPM0_bits); //在 LPM0中等待故障标志
___ no_operation();
}
#if defined (__TI_Compiler_version__)|| defined (__IAR_SYSTEMS_ICC__)
#pragma vector=UNMI_vector
__interrupt void UNMI_ISR (void)
#Elif 已定义(_ GNU _)
void __attribute__((interrupt (UNMI_vector))) UNMI_ISR (void)
#else
#错误编译器不受支持!
#endif
{
正确
{
//在下面的行中设置一个断点以观察从 LFMODOSC 运行的 XT1
//在晶振故障期间命中断点时
CSCTL5 &=~HFXTOFFG; //清除 XT1故障标志
SFRIFG1 &=~OFIFG;
P1OUT |= BIT0;
__delay_cycles (25000); //再次设置标志的时间
—while (SFRIFG1&OFIFG); //测试振荡器的故障标志
P1OUT &=~BIT0;
}