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.

[参考译文] MSP430F247:不能在 XIN 上使用外部时钟、不能使用晶体或振荡器

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/979116/msp430f247-not-able-to-use-the-external-clock-on-xin-not-a-crystal-or-oscillator

器件型号:MSP430F247

请帮我解决此问题、我无法继续。

//时钟设置
//-将时钟设置为16MHz

_BIC_SR_register (OSCOFF);//启用 LFXT1振荡器

BCSCTL1 |= XT2OFF + XTS;// LFXT1CLK 为高频
BCSCTL3 |= LFXT1S0 + LFXT1S1;//数字外部0.4至16MHz 时钟源
BCSCTL3 &=~(XCAP0 + XCAP1);
执行//等待振荡器稳定

IFG1 &=~OFIFG;//清除标志  
//延迟至少50uS
延迟= 0xFF;
而(延迟>0)延迟--;

while ((IFG1 & OFIFG)!= 0);//重复执行直到标志保持清零
BCSCTL2 |= SELM1 + SELM0;// MCLK 源选择3:LFXTCLK

  • 这就是输入时钟的外观
  • 从 CDCLVC1102PWR 馈入的16MHz 外部时钟
  • 我如何确保系统使用外部时钟。 必须检查时钟中断。

    //-设置 Timer_A - 1毫秒中断、使用 ADC12的输出单元1
    TACTL = TACLR;//停止并清除计时器
    TACCR1 = TACCR2 = 0;//停止这些计数器
    CCR0 = 2000;// 16MHz、中断1msec = 1000/秒

    // SMCLK (子主时钟)、/8、向上计数@ 1.5MHz
    TACTL = TASSEL1 +// Timer A 时钟源选择1 */
    ID0 +/* Timer A 时钟输入分频器0 */
    ID1 +/* Timer A 时钟输入分频器1 */
    MC0;// Timer A 模式控制0 */
    CCTL0 = CCIE;//启用中断

    我希望它每 ms 为我提供一次中断。

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

    Maneish、您好!

    您是否能够使其正常工作?  此外、检查时钟的一种更简单的方法可能是仅从 GPIO 输出 SMCLK、例如 P1.4。   

    此外、您似乎使用的是外部时钟源、而不是晶体振荡器。  在本例中、您实际上需要绕过 XT2。  用户指南指出您可以执行以下操作:

    当 XT2Sx = 11且 XT2OFF=0时、XT2可以与 XT2IN 引脚上的外部时钟信号一起使用。 当与一个外部信号一起使用时、外部频率必须满足针对 XT2的数据表参数。 当输入频率低于指定的下限时、XT2OF 位可被置位以防止 CPU 使用 XT2CLK 计时。'

    尝试一下、看看您是否可以从时钟源运行它。   

    谢谢、

    JD

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

    谢谢、解决了