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.

[参考译文] MSP430G2553:是否有更好的方法输出 PWM 波形仅持续10秒或仅持续指定的时间范围秒

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/978350/msp430g2553-is-there-a-better-way-of-outputting-a-pwm-wave-for-10-seconds-only-or-a-specified-time-frame-seconds-only

器件型号:MSP430G2553

#include


void pwmwave_a (void);

int main (空)

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

对于(i=0;i< 20000;i++);

pwmwave_a();//调用计时器函数

  TA1CTL |= MC_0;//计时器暂停。 停止 PWM 波

返回0;

}  

void pwmwave_a (void)//此处是更改 PWM 波形参数的位置

/*** Timer1_A 设置***/
P2DIR |= BIT1;
P2SEL |= BIT1;
TA1CCR0 |= 5000 - 1;// TA1CCRO |= X-1,更改 X 的值会更改频率。 X 越高、频率越低。
TA1CCTL1 |= OUTMOD_7;//将输出设置为复位/设置,请参阅用户手册的第384页
TA1CCR1 |= 2500;//控制占空比设置为50%,以确定占空比
TA1CTL |= tassel_2 + MC_1;//控制计时器配置请参阅用户手册的370页

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

    >  TA1CTL |= MC_0;//计时器暂停。 停止 PWM 波

    这实际上不会停止计时器。 我建议改为:

    >  TA1CTL &&~MC;//计时器暂停。 停止 PWM 波

    >   TA1CCTL1 = OUT_0 | OUTMOD_0;  //强制 PWM 信号为低电平

    --------------------------

    我不太清楚10秒是在哪里完成的。 一种方法是设置 TA1CCTL0:CCIE 并使用 Timer1_A0_vector 计数到2000=(1000万 usec/5000)。

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

    您好、感谢您的回答。 我使用 了 TA1CCTL1 &=~OUTMOD_7 来关断计时器、结果有效。  

    TA1CCTL0 |= CCIE, 是否调用 Timer1_A0_vector? 我很难读出 RETI 指令使我从 ISR 中获得了什么结果。  

    对于所有问题、我都很抱歉。

    此致、

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

    是的、TA1CCTL0:CCIE 可使 Timer1_A0_vector 成为可能。 对于任何 A0_vector-s、调用该向量时 CCIFG 都会自动清零。 对于 a1_vector-s.、您的代码必须清除 IFG。

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

     谢谢您、我的问题得到了解决。

    此致、