前期准备:
- STM32CubeMX
- STM32RCT6核心板
- IDE Keil(MDK-ARM)
STM32CubeMX部分
1. 配置时钟
选择STM32F103RCTx系列芯片,配置时钟的同时会自动配置IO口引脚
将HCLK设置为最大频率72MHz
2.配置PWM
脉冲宽度调试(PWM):脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
STM32F1系列中:
高级定时器:TIM1、TIM8
通用定时器:TIM2、TIM3、TIM4、TIM5
基本定时器:TIM6、TIM7
STM32的每个通用定时器都有独立的4个通道可以用来作为:输入捕获、输出比较、PWM输出、单脉冲模式输出等
STM32的定时器除了TIM6和TIM7(基本定时器)之外,其他的定时器都可以产生PWM输出。其中,高级定时器TIM1、TIM8可以同时产生7路PWM输出
原理讲解
向上计数模式:
- 当CNT<CCRx时,TIMx_CHx通道输出低电平
- 当CNT>CCRx时,TIMx_CHx通道输出高电平
一个PWM周期:
0~t1:CNT<CCRx,输出低电平
t1~t2:CNT>CCRx,输出高电平
t2:当CNT到达ARR时,定时器溢出,CNT归0,一个PWM周期结束
每个定时器有4个通道,每个通道都有一个捕获比较寄存器(即获取CNT的值,与CCRx进行比较),通过比较输出高低电平,以此来实现对脉宽的调制(PWM)
TIMx_ARR寄存器确定PWM频率
TIMx_CCRx寄存器确定占空比
PWM工作模式:</