21ic问答首页 - HC32F030如何实现不用中断更新CCR调节互补PWM占空比?
HC32F030如何实现不用中断更新CCR调节互补PWM占空比?
fafen2020-12-23
因为要使用互补PWM控制H桥来驱动电机,参考HC32F030驱动下的产生互补PWM的例子“HC32F030_DDL_Rev1.2.0\example\timer3\timer3_m23_tpcmp_pwm”,可以产生控制互补PWM占空比控制电机转动。但问题是这种方式需要在定时器溢出中断频繁更新CCR的值,频繁的中断服务程序频繁占用系统处理时间,而我只需要输出互补PWM而已。
尝试在参考例子中关掉中断,使能PWM自动输出。
//stcTim3BaseCfg.pfnTim3Cb = Tim3_LRMotorPWM_Int; //中断函数入口
//Tim3_ClearAllIntFlag(); //清中断标志
//Tim3_Mode23_EnableIrq(Tim3UevIrq); //使能TIM3 UEV更新中断
//EnableNvic(TIM3_IRQn, IrqLevel0, TRUE); //TIM3中断使能
Tim3_M23_EnPWM_Output(TRUE, TRUE); //端口输出使能
应用程序中改变CCR的值,试图改变PWM占空比:
Init_LRMotor_PWM();
Tim3_M23_CCR_Set(Tim3CCR0A, 250);
Tim3_M23_CCR_Set(Tim3CCR0B, 750);
Tim3_M23_CCR_Set(Tim3CCR1A, 250);
Tim3_M23_CCR_Set(Tim3CCR1B, 750);
Tim3_M23_Run();
Delay_MS(2000);
Tim3_M23_Stop();
Delay_MS(2000);
Tim3_M23_CCR_Set(Tim3CCR0A, 750);
Tim3_M23_CCR_Set(Tim3CCR0B, 250);
Tim3_M23_CCR_Set(Tim3CCR1A, 750);
Tim3_M23_CCR_Set(Tim3CCR1B, 250);
Tim3_M23_Run();
下载视频
尝试在参考例子中关掉中断,使能PWM自动输出。
//stcTim3BaseCfg.pfnTim3Cb = Tim3_LRMotorPWM_Int; //中断函数入口
//Tim3_ClearAllIntFlag(); //清中断标志
//Tim3_Mode23_EnableIrq(Tim3UevIrq); //使能TIM3 UEV更新中断
//EnableNvic(TIM3_IRQn, IrqLevel0, TRUE); //TIM3中断使能
Tim3_M23_EnPWM_Output(TRUE, TRUE); //端口输出使能
应用程序中改变CCR的值,试图改变PWM占空比:
Init_LRMotor_PWM();
Tim3_M23_CCR_Set(Tim3CCR0A, 250);
Tim3_M23_CCR_Set(Tim3CCR0B, 750);
Tim3_M23_CCR_Set(Tim3CCR1A, 250);
Tim3_M23_CCR_Set(Tim3CCR1B, 750);
Tim3_M23_Run();
Delay_MS(2000);
Tim3_M23_Stop();
Delay_MS(2000);
Tim3_M23_CCR_Set(Tim3CCR0A, 750);
Tim3_M23_CCR_Set(Tim3CCR0B, 250);
Tim3_M23_CCR_Set(Tim3CCR1A, 750);
Tim3_M23_CCR_Set(Tim3CCR1B, 250);
Tim3_M23_Run();
下载视频
赞0
评论
2020-12-28
赞0
评论
2020-12-24
您需要登录后才可以回复 登录 | 注册