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.

[参考译文] MSP430FR2355:尝试使用 MSP430FR2355#39;s 计时器 B 模块生成38kHz 方波、我不能看到 TB1.1引脚上的方波(P2.0)

Guru**** 2536730 points
Other Parts Discussed in Thread: MSP430FR2355

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/880333/msp430fr2355-trying-to-generate-a-38-khz-square-wave-using-msp430fr2355-s-timer-b-module-i-don-t-see-the-square-wave-on-tb1-1-pin-p2-0

器件型号:MSP430FR2355

我正在尝试使用 Timer B 外设通过 MSP430FR2355在 P2.0上生成38kHz 方波、但看不到 P2.0切换。

这是我的代码。  

在 IAR IDE 的寄存器监视窗口中、我可以看到定时器寄存器计数增加到421、然后计数下降到0、然后再次递增和递减。

如果您发现我所做的任何错误、请告诉我。

P2SEL0 |= 0x01;   // TB1.1在 P2.0上;

 P2SEL1 &= 0xFE;   //  为 P2.0选择辅助功能。
    
 P2DIR |= 0x01;   // TB1.1是输出。
 
 Timer_Register_value_for_38_kHz_with _16_MHz_SMCLK = 421;    
   
 
 TB1CCTL0 |= CCIE;    //启用捕捉/比较中断。
                                     //该位启用的中断请求
                                     //相应的 CCIFG 标志。
                                     //     0b =中断被禁用
                                     //     1b =中断被启用

                                   // 时序现在开始、MC_3 =向上/向下  


 TB1CTL = TBSSEL_2 + MC_3 + ID_0 + TBCLR;     // 选择 SMCLK; 预分频= 1、清除计时器(然后复位
                                            // 自动读为'0'。 运行增/减模式、定时器向上计数到 CCR1值、然后向下计数到0。
                                                                                   // TBSSEL = 10b = SMCLK
 
 TB1CCR0 = Timer_Register_value_for_38_kHz_with _16_MHz_SMCLK;//  16、000、000 / 421 = 38kHz
 TB1CCR1 = Timer_Register_value_for_38_kHz_with _16_MHz_SMCLK;//  16、000、000 / 421 = 38kHz
 
 
TB1CCTL1 = OUTMOD_4;   //切换模式;

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

    为了获得50%的占空比、我是否需要 TB1CCR1的计数为 TB1CCR0的1/2?

    此外、我还对进行了注释

    TB1CCTL0 |= CCIE;语句、但之后尚未运行代码。  但我认为这不是问题。

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

    您是否停止看门狗?

    WDTCTL = WDTPW | WDTHOLD;//停止 WDT

    伊斯天

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

    1) 1) CCR1应为=CCR0/2

    2) 2)如果没有 ISR、则应将 CCIE 保留在外。

    3) 3)请勿忘记"PM5CTL0 &=~LOCKLPM5;"

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

    我将 TB1CCTL1从 OUTMOD_4更改为 OUTMOD_2、现在我在 TB1.1上获得38kHz 的输出。

    谢谢。