[STM32F1] STM32CubeMX配置生成PWM

[复制链接]
541|0
 楼主| LOVEEVER 发表于 2023-12-16 16:37 | 显示全部楼层 |阅读模式
STM32CubeMX配置生成代码:

1.png




配置注意事项

想要更加精确控制,并更加满足应用层的需求,就需要自己一步一步深入了解原理。下面,总结几点常见的问题。



1、引脚映射



如果你使用的引脚需要映射,就需要配置对应的参数。



比如STM32F1使用PB11(需要查看数据手册):



2.png


需要增加对应的“映射”代码:

  1. //复用功能
  2. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

  3. //定时器(PWM)引脚映射
  4. GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);


2、频率和占空比精度



如果使用32位定时器的话,频率范围更宽、精度也可以达到更高。比如,频率0.01Hz、占空比0.01%等。

如果是16位的话,其中的参数都不能超过16位(65535):


  1. #define PWM_COUNTER_CLOCK         1000000
  2. #define PWM_PRESCALER_VALUE       (SystemCoreClock/PWM_COUNTER_CLOCK - 1)

  3. tim_period = PWM_COUNTER_CLOCK/Frequency - 1;                      //计算出计数周期(决定输出的频率)
  4. tim_pulse  = (tim_period + 1)*Dutycycle / 100;                     //计算出脉宽值(决定PWM占空比)

具体可根据自己情况进行配置,比如PWM(定时器)计数时钟、分频值等。



实际应用代码,建议增加各个参数的判断,以防越界(这里为了方便理解,就写的比较简单)。



3、更多



STM32都有硬件PWM输出功能,但不同的系列,其配置可能略有一些差异,简单参考官方例程以及手册。



现在大部分单片机都自带有硬件PWM输出功能,硬件的好处就是不用CPU干预。如果没有,可以尝试上面说的定时器中断的方式。

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

本版积分规则

350

主题

2689

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部