STM32F103的TIM1和TIM8是高级定时器,可以产生嵌入死区时间的互补PWM波,使用STM32CubeIDE完成相关配置,可以直接生成代码,输出带死区的PWM波。
根据项目需要,单片机需输出频率为36kHz,占空比50%,死区时间500ns的互补PWM波,下面使用STM32CubeIDE完成相关配置。
1、选择时钟源,这里选择外部石英晶体作为HSE时钟源

2、配置系统时钟为72MHz,高级定时器TIM1和TIM8时钟由APB2提供,这里APB2等于系统时钟72MHz

3、这里使用TIM1来产生互补PWM波,TIM1复用功能如下表所示:

我们使用单片机的PA7和PA8引脚作为PWM互补输出的两个通道,在STM32CubeIDE里将此两引脚选择为TIM1_CH1N和TIM1_CH1

4、点左边的Timers,选择Tim1,TIM1 Mode and Configuration下的Mode选项下主要完成以下配置:
**Clock Source **选择 Internal Clock,使用内部时钟源;
Channel1 选择 PWM Generation CH1 CH1N,PWM产生CH1和CH1N,对应上面选择的引脚PA8和PA7。

5、Configuration选项下主要完成以下配置:
Counter Settings下的配置:
Prescaler 设置为1,预分频器设置为2-1;
Counter Mode选择Up,计数模式为向上计数;
Counter Period设置为1000-1,设置计数周期;
auto-reload preload 选择Enable,开启自动重装载。
以上几项配置主要是设置PWM频率,计数器从0开始计数,计数到(1000-1),再从0重新开始计数,预分频器设置为1,则计数器使用的时钟频率为72MHz/2 = 36MHz,计数周期为1000×1/36MHz,频率为36MHz/1000 = 36kHz。
Break And Dead Time Management下的配置:
Dead Time 设置为36,配置死区时间,死区时间36×1/72MHz = 500ns。
PWM Generation Channel 1 and 1N下的配置:
Mode 选择 PWM Mode 1,选择PWM产生模式;
Pulse 设置为500,设置占空比,对应上面的Counter Period,此时占空比为Pulse/(Counter Period+1) = 500/1000 = 50%。
其他的选项保持默认值即可。

6、完成以上配置后即可生成代码,打开生成的代码,在main.c的TIM1初始化函数MX_TIM1_Init(void)中添加两行代码,将PWM开启。

7、编译,下载到开发板上,用示波器可以看到输出的带死区的互补PWM波形


上一篇:stm32中断怎么处理的
下一篇:STM32 MCU通过STM32CubeMx配置NVIC怎么没有中断子优先级选项
推荐阅读最新更新时间:2026-03-25 11:21
- 用于 7VIN 至 16VIN、1.5V 和 1.2V 输出的 LTM4628EV DC/DC 模块稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3728LIGN 的参考设计
- DER-406 - 适用于 A19 灯的 5.76 W 高 PF 非隔离降压-升压型 TRIAC 调光 LED 驱动器
- ADR5045B 5V 输出精密微功率并联模式电压基准的典型应用
- LT3970EDDB-3.42 2.5V 降压转换器的典型应用
- MC78M08BDTG 8V 电流调节器的典型应用
- LT1021DCN8-5 精密电压基准的典型应用
- DER-282 - 100W, 扁平(11 mm), LLC DC-DC转换器
- REF193 低压差开尔文连接电压基准的典型应用电路
- LT3088EM 线性稳压器用于添加软启动的典型应用

dm9000cep网卡通信
STM32F103中文参考手册
FDC2214 4路微小电容检测电路
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号