c语言 - 在UP模式下使用定时器生成3个PWM信号,频率为2 kHz,占空比为P1.4为10%,P1.3为30%,P1.2为60%,OUTMOD_7信号



我正在使用和MSP430F5529开发板,一个创建的PCB和CCS进行编程。我的代码如下:

#include <msp430.h>

int main(void)
{

WDTCTL = WDTPW | WDTHOLD;       //stop watchdog timer

P1SEL |= BIT2;                  //configure P1.2 as TA0.2
P1DIR |= BIT2;                  //P1.2 is output (compare mode)
P1SEL |= BIT3;                  //configure P1.3 as TA0.3
P1DIR |= BIT3;                  //P1.3 is output (compare mode)
P1SEL |= BIT4;                  //configure P1.4 as TA0.4
P1DIR |= BIT4;                  //P1.4 is output (compare mode)
TA0CCR0 = 999;                  //CCR0 is used to generate the desired period
TA0CCR2 = 599;                  //CCR2 is used to generate 0.60 duty cycle
TA0CCR3 = 299;                  //CCR3 is used to generate 0.30 duty cycle
TA0CCR4 = 99;                   //CCR4 is used to generate 0.10 duty cycle

TA0CCTL2 = OUTMOD_7;            //PWM 2
TA0CCTL3 = OUTMOD_7;            //PWM 3
TA0CCTL4 = OUTMOD_7;            //PWM 4
TA0CTL = MC_1 + TASSEL_2 + TACLR|ID_2;
_BIS_SR(LPM0_bits+GIE);
}

没有一个LED打开使用这个代码,我不确定如何修复它。

您在裸机MCU程序中从main((返回,因此它将崩溃&在它有机会做任何有意义的事情之前燃烧。

在独立程序中编写main((最常见的方法是:

void main (void)
{
...
for(;;)
{ 
// kick watchdog here
...
}
}

值得注意的是,这永远不会从main((返回,而是停留在"中;"永远";环

void main (void)是一种实现定义的形式,受到所有嵌入式系统编译器的支持。(要在gcc上使用此表单,必须使用-ffreestanding进行编译。(

最新更新