各位好,由于硬件设计将PWM接在WTIME4的PD4/PD5接口,按照配置普通TIMER的PWM模式测试,发现寄存器的值有变化,但是使用示波器不能检测到PWM波形,请各位指点。
//PWM #define PWM0_PORT_CLKSYSCTL_PERIPH_GPIOB #define PWM0_TIMER_PERIPH_CLKSYSCTL_PERIPH_TIMER2 #define PWM0_TIMER_BASETIMER2_BASE #define PWM0_PORT_BASEGPIO_PORTB_BASE #define PWM0_PORT_PINGPIO_PIN_0 #define PWM0_TIMER_CHLTIMER_A #define PWM0_TIMER_PINGPIO_PB0_T2CCP0 #define PWM12_PORT_CLKSYSCTL_PERIPH_GPIOD #define PWM12_TIMER_PERIPH_CLKSYSCTL_PERIPH_WTIMER4 #define PWM12_TIMER_BASEWTIMER4_BASE #define PWM12_PORT_BASEGPIO_PORTD_BASE #define PWM1_PORT_PINGPIO_PIN_4 #define PWM2_PORT_PINGPIO_PIN_5 #define PWM1_TIMER_CHLTIMER_A #define PWM2_TIMER_CHLTIMER_B #define PWM1_TIMER_PINGPIO_PD4_WT4CCP0 #define PWM2_TIMER_PINGPIO_PD5_WT4CCP1 void TimerPWMInit(uint32_t prescale,uint32_t loadValue) { SysCtlPeripheralEnable(PWM0_PORT_CLK); SysCtlPeripheralEnable(PWM12_PORT_CLK); SysCtlPeripheralEnable(PWM0_TIMER_PERIPH_CLK); SysCtlPeripheralEnable(PWM12_TIMER_PERIPH_CLK); //开启时钟 TimerConfigure(PWM0_TIMER_BASE,TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PWM); TimerConfigure(PWM12_TIMER_BASE,TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PWM | TIMER_CFG_B_PWM); TimerClockSourceSet(PWM0_TIMER_BASE,TIMER_CLOCK_SYSTEM); TimerClockSourceSet(PWM12_TIMER_BASE,TIMER_CLOCK_SYSTEM); TimerControlLevel(PWM0_TIMER_BASE,TIMER_A,true); TimerControlLevel(PWM12_TIMER_BASE,TIMER_BOTH,true); TimerPrescaleSet(PWM0_TIMER_BASE,TIMER_A,prescale); TimerPrescaleSet(PWM12_TIMER_BASE,TIMER_BOTH,prescale); GPIOPinConfigure(PWM0_TIMER_PIN); GPIOPinConfigure(PWM1_TIMER_PIN); GPIOPinConfigure(PWM2_TIMER_PIN); GPIOPinTypeTimer(PWM0_PORT_BASE,PWM0_PORT_PIN); GPIOPinTypeTimer(PWM12_PORT_BASE,PWM1_PORT_PIN); GPIOPinTypeTimer(PWM12_PORT_BASE,PWM2_PORT_PIN); TimerLoadSet(PWM0_TIMER_BASE,TIMER_A,loadValue); TimerLoadSet(PWM12_TIMER_BASE,TIMER_BOTH,loadValue); TimerEnable(PWM0_TIMER_BASE,TIMER_A); TimerEnable(PWM12_TIMER_BASE,TIMER_BOTH); }
long zhao96:
接的普通时钟接口的PB0可以测到PWM波形
long zhao96:
回复 long zhao96:
芯片型号TM4C123GH6PM
long zhao96:
回复 long zhao96:
问题已经解决,去掉
TimerPrescaleSet(PWM0_TIMER_BASE,TIMER_A,prescale);
TimerPrescaleSet(PWM12_TIMER_BASE,TIMER_BOTH,prescale);
就可以了
xyz549040622:
回复 long zhao96:
感觉你这个还是对看门狗定时器了解不当造成的,没用看门狗定时器产生过PWM,等我有空跑跑看。
long zhao96:
回复 xyz549040622:
这个不是看门狗定时器,是宽定时器
xyz549040622:
回复 long zhao96:
确实是我理解错了,没用过这个,还以为是看门狗输出PWM呢。