[AT32F421] AT32F4xx_多路PWM输出动态修改占空比

[复制链接]
 楼主| liu510706140 发表于 2021-5-12 17:44 | 显示全部楼层 |阅读模式
本帖最后由 liu510706140 于 2021-5-12 17:47 编辑

多路PWM输出的范例没有找到修改占空比的函数,新建修改占空比的函数,多次调试测试可行。

主函数如下,程序看附件
  1. int main(void)
  2. {
  3.   /* Sys Init */
  4.   Sys_Config();

  5.   while (1)
  6.   {
  7.         IWDG_ReloadCounter();//喂狗

  8.                 PWM_TMR1_Channel1(Key_count*100);
  9.                 PWM_TMR1_Channel2(Key_count*100);
  10.                 PWM_TMR1_Channel3(Key_count*100);
  11.                 PWM_TMR1_Channel4(Key_count*100);
  12.                 PWM_TMR3_Channel1(Key_count*100);
  13.                 PWM_TMR3_Channel2(Key_count*100);
  14.                 PWM_TMR3_Channel3(Key_count*100);
  15.                 PWM_TMR3_Channel4(Key_count*100);
  16.                delay_ms(1000);//延时1秒
  17.                 Key_count++;
  18.                 if(Key_count>10)Key_count=0;
  19.   }

  20. }

  1. //输出周期=1000   占空比=500-1=50%
  2. void PWM_TMR1_Channel1(unsigned short int PulseValue)
  3. {
  4.         TMR1->CC1 = PulseValue;
  5. }
  6. void PWM_TMR1_Channel2(unsigned short int PulseValue)
  7. {
  8.         TMR1->CC2 = PulseValue;
  9. }
  10. void PWM_TMR1_Channel3(unsigned short int PulseValue)
  11. {
  12.         TMR1->CC3 = PulseValue;
  13. }
  14. void PWM_TMR1_Channel4(unsigned short int PulseValue)
  15. {
  16.         TMR1->CC4 = PulseValue;
  17. }
  18. void PWM_TMR3_Channel1(unsigned short int PulseValue)
  19. {
  20.         TMR3->CC1 = PulseValue;
  21. }
  22. void PWM_TMR3_Channel2(unsigned short int PulseValue)
  23. {
  24.         TMR3->CC2 = PulseValue;
  25. }
  26. void PWM_TMR3_Channel3(unsigned short int PulseValue)
  27. {
  28.         TMR3->CC3 = PulseValue;
  29. }
  30. void PWM_TMR3_Channel4(unsigned short int PulseValue)
  31. {
  32.         TMR3->CC4 = PulseValue;
  33. }




PWM.zip

1.68 KB, 下载次数: 20

您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 返回顶部 返回列表