GD32的TIMER0_CH0可以当作普通的PWM输出吗
GD32的TIMER0为高级定时器,他有互补输出,现在只想使用为普通的非互补输出,那么它的TIMER0_CH0可以当作普通的PWM输出吗?不开启互补输出它的TIMER0_CH0_ON可以用作普通的GPIO吗? GD32的TIMER0_CH0可以当作普通的PWM输出,但需要正确配置相关参数 在定时器配置里配置一下就可以了/* CH0 configuration in OC TOGGLE mode */
if (LED_CCXN) {
timer_ocintpara.outputstate= TIMER_CCX_DISABLE; //ͨµÀÊä³ö״̬
timer_ocintpara.outputnstate = TIMER_CCXN_ENABLE; //»¥²¹Í¨µÀÊä³ö״̬
timer_ocintpara.ocnpolarity= TIMER_OCN_POLARITY_HIGH; //»¥²¹Í¨µÀÊä³ö¼«ÐÔ
timer_ocintpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;//¿ÕÏÐ״̬Ï»¥²¹Í¨µÀÊä³ö¼«ÐÔ
}else{
timer_ocintpara.outputstate= TIMER_CCX_ENABLE; //ͨµÀÊä³ö״̬
timer_ocintpara.outputnstate = TIMER_CCXN_DISABLE; //»¥²¹Í¨µÀÊä³ö״̬
timer_ocintpara.ocpolarity = TIMER_OC_POLARITY_HIGH; //ͨµÀÊä³ö¼«ÐÔ
timer_ocintpara.ocidlestate= TIMER_OC_IDLE_STATE_LOW; //¿ÕÏÐ״̬ÏÂͨµÀÊä³ö
}
timer_channel_output_config(ThisTIMER, TimerCh, &timer_ocintpara);
//1= TIMER_OC_MODE_TOGGLE
// timer_channel_output_mode_config(ThisTIMER, TimerCh, TIMER_OC_MODE_TOGGLE);
// timer_channel_output_shadow_config(ThisTIMER, TimerCh, TIMER_OC_SHADOW_ENABLE);
// or
//2= TIMER_OC_MODE_PWM0
timer_channel_output_mode_config(ThisTIMER, TimerCh, TIMER_OC_MODE_PWM0);
timer_channel_output_pulse_value_config(ThisTIMER,TimerCh,2500-1);
timer_channel_output_shadow_config(ThisTIMER, TimerCh, TIMER_OC_SHADOW_ENABLE);
/* auto-reload preload enable */
在定时器配置里配置一下就可以了
/* CH0 configuration in OC TOGGLE mode */
if (LED_CCXN) {
timer_ocintpara.outputstate= TIMER_CCX_DISABLE; //通道输出状态
timer_ocintpara.outputnstate = TIMER_CCXN_ENABLE; //互补通道输出状态
timer_ocintpara.ocnpolarity= TIMER_OCN_POLARITY_HIGH; //互补通道输出极性
timer_ocintpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;//空闲状态下互补通道输出极性
}else{
timer_ocintpara.outputstate= TIMER_CCX_ENABLE; //通道输出状态
timer_ocintpara.outputnstate = TIMER_CCXN_DISABLE; //互补通道输出状态
timer_ocintpara.ocpolarity = TIMER_OC_POLARITY_HIGH; //通道输出极性
timer_ocintpara.ocidlestate= TIMER_OC_IDLE_STATE_LOW; //空闲状态下通道输出
}
timer_channel_output_config(ThisTIMER, TimerCh, &timer_ocintpara);
//1= TIMER_OC_MODE_TOGGLE
// timer_channel_output_mode_config(ThisTIMER, TimerCh, TIMER_OC_MODE_TOGGLE);
// timer_channel_output_shadow_config(ThisTIMER, TimerCh, TIMER_OC_SHADOW_ENABLE);
// or
//2= TIMER_OC_MODE_PWM0
timer_channel_output_mode_config(ThisTIMER, TimerCh, TIMER_OC_MODE_PWM0);
timer_channel_output_pulse_value_config(ThisTIMER,TimerCh,2500-1);
timer_channel_output_shadow_config(ThisTIMER, TimerCh, TIMER_OC_SHADOW_ENABLE);
/* auto-reload preload enable */
选择合适的计数模式,如向上计数模式或中央对齐计数模式等
配置自动重装载寄存器的值,该值决定了PWM的周期。例如,如果系统时钟频率为72MHz,想要得到一个周期为10ms的PWM信号,那么自动重装载寄存器的值应设置为72000-1
比较输出使能位用于控制是否输出PWM信号,输出极性位则决定了PWM信号的高低电平状态
根据实际需求设置预分频器的值,以调整定时器的计数频率
比较输出使能位用于控制是否输出PWM信号,输出极性位则决定了PWM信号的高低电平状态
页:
[1]