打印

HC32F030如何实现不用中断更新CCR调节互补PWM占空比?

[复制链接]
1525|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fafen|  楼主 | 2020-12-23 21:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HC, PWM, TI, se, ev
因为要使用互补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();
      
      下载视频         

使用特权

评论回复
沙发
martinhu| | 2020-12-24 09:44 | 只看该作者
中断里面修改CCRx只是个例子,使能传输buf之后,你可以在任何位置修改CCRx以改变PWM占空比……

使用特权

评论回复
板凳
中子家| | 2020-12-28 13:29 | 只看该作者
可以的,打开缓冲就行,随时都可以些,出现更新事件的时候才会实际改变占空比

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝