想通过CC430F5137自身的TA0定时器的CCR1、CCR2、CCR3进行输出3路占空比可调的PWM,同时将3路PWM信号通过IO口映射到P3.0、P3.1、P3.2的IO口具体代码如下:
uint8_t IintPWM(void)//PWM参数设置
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
PMAPPWD = 0x02D52; // Get write-access to port mapping regs
//P3MAP0 = PM_TA0CCR0A; // Map CBOUT output to P1.6
P3MAP0 = PM_TA0CCR1A;
P3MAP1 = PM_TA0CCR2A;
P3MAP2 = PM_TA0CCR3A;
// P3MAP3 = PM_NONE;
P3MAP7 = PM_NONE;
PMAPPWD = 0;
// Setup Port Pins
P3DIR |= BIT0+BIT1+BIT2; // P2.0,2,4,6,7 output
P3SEL |= BIT0+BIT1+BIT2; // P2.0,2,4,6,7 Port Map functions
// Setup TB0
TA0CCTL0 = OUTMOD_4; // CCR1 toggle/set
TA0CCR0 = 256; // PWM Period/2
TA0CCTL1 = OUTMOD_6; // CCR1 toggle/set
TA0CCR1 = 192; // CCR1 PWM duty cycle
TA0CCTL2 = OUTMOD_6; // CCR2 toggle/set
TA0CCR2 = 128; // CCR2 PWM duty cycle
TA0CCTL3 = OUTMOD_6; // CCR3 toggle/set
TA0CCR3 = 64; // CCR3 PWM duty cycle
TA0CTL = TASSEL_2 + MC_3 + TACLR; // SMCLK, up mode, clear TAR
__bis_SR_register(LPM3_bits); // Enter LPM3
__no_operation(); // For debugger
return 0;
}
占空比调节函数:
uint8_t SetPWMDUTY(uint16_t PWM_1,uint16_t PWM_2,uint16_t PWM_3) //3路PWM输出
{
TA0CCR1 = PWM_1;
TA0CCR2 = PWM_2;
TA0CCR3 = PWM_3;
return 0;
}
但是发现在程序运行过程中,无法进行占空比调节,请问要如何才能实现在占空比可调节??