目前有一个项目,需要使用到5路PWM,需要使用timer3 的P1.4作为PWM的输出,在代码中模仿TIMER1 的初始化,添加代码,但是使用示波器为检测到有波形输出,请帮忙看看哪里出了问题,使用的是compare mode ,代码如下:
引脚初始化
P1 &= ~( 0x10);
P1DIR |= (0x10);
P1INP&= ~(0x10);
//DISABLE_LAMP;
P1DIR |= 0x10;
PERCFG &= ~(0x20);
P2SEL |= 0x20;
添加timer3 的初始化
void HalTimer3Init(halTimerCBack_t cBack)
{
T3CCTL0 = 0; /* Make sure interrupts are disabled */
T3CCTL1 = 0; /* Make sure interrupts are disabled */
/* Setup prescale & clock for timer3 */
halTimerRecord[HW_TIMER_3].prescale = HAL_TIMER34_8_TC_DIV1; //HAL_TIMER3_8_PRESCALE;
halTimerRecord[HW_TIMER_3].clock = HAL_TIMER_32MHZ;
halTimerRecord[HW_TIMER_3].prescaleVal = HAL_TIMER4_8_PRESCALE_VAL;
/* Setup Timer3 Channel structure */
//halTimerChannel[HW_TIMER_3].TxCCTL = TCHN_T3CCTL;
//halTimerChannel[HW_TIMER_3].TxCCL = TCHN_T3CCL;
//halTimerChannel[HW_TIMER_3].TxCCH = TCHN_T3CCH;
//halTimerChannel[HW_TIMER_3].TxOVF = TCNH_T3OVF;
//halTimerChannel[HW_TIMER_3].ovfbit = TCHN_T3OVFBIT;
//halTimerChannel[HW_TIMER_3].intbit = TCHN_T3INTBIT;
halTimerRecord[HW_TIMER_3].configured = TRUE;
halTimerRecord[HW_TIMER_3].opMode = 0x02; //HAL_TIMER1_OPMODE_UPDOWN;
halTimerRecord[HW_TIMER_3].channel = 0;
halTimerRecord[HW_TIMER_3].channelMode = 0;
halTimerRecord[HW_TIMER_3].intEnable = FALSE;
halTimerRecord[HW_TIMER_3].callBackFunc = cBack;
Timer3MaxCount = halTimer3SetPeriod (1000);
halTimerSetPrescale (HW_TIMER_3, halTimerRecord[HW_TIMER_3].prescale);
halTimerSetChannelMode (HW_TIMER_3, halTimerRecord[HW_TIMER_3].channelMode);
*(halTimer3Channel[0].TxCCTL + channel) = 0x2C;
halTimer3SetChannelDuty (HAL_T1_CH1, 0);
T3CTL = 0x1c;
}