脉冲宽度调制模式(PWM)可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。
本示例实现 IO 输出模式–PWM 波形输出。 以 LED 驱动为例, 使用定时器高级功能(PWM 模式), 实现呼吸灯效果。
1.硬件接口
本硬件平台有3个LED灯分别为LED2、LED3、LED4LED2接PA1,LED2接PB8,LED4接PB9,硬件原理图如下:

根据STM32引脚定义手册或者STM32CUbeMX软件我们可得知定时器4的CH1和CH2对应外部引脚PB8和PB9。

2 软件设计
打开STM32CubeMX工具,配置定时器4,将PB8配置为定时器4通道3(复用推挽输出),PB9配置为定时器4通道4(复用推挽输出)。



3.参数说明
| 模式 | 说明 |
| Input capture direct mode | 输入捕获直接模式 |
| Input capture indirectmode | 输入捕获间接模式 |
| Input capture triggered by TRC | 输入捕获触发器模式 |
| Output compare no output | 输出比较(冻结模式000 ) |
| Output compare CH3 | 输出比较(001) |
| PWM Generation No output | PWM产生无输出 |
| PWM Generation CH3 | PWM输出到CH3 |
| CH3 Combined channels | 联合通道 |
| xor activation | 定时器输入异或模式 |

4. 代码生成

PWM模式配置:

PB8、PB9引脚配置和PWM模式使能
HAL_TIM_PWM_Start(timHandle,TIM_CHANNEL_3);//初始化通道3
HAL_TIM_PWM_Start(timHandle,TIM_CHANNEL_4);//初始化通道4
引脚模式配置及PWM初始化

4.呼吸灯主函数示例
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
/*实现呼吸灯*/
if(flag==0)i++;
else i--;
if(i>=300)flag=1;
if(i==0)flag=0;
HAL_Delay(3);
htim4.Instance->CCR3=i;//调节占空比
htim4.Instance->CCR4=i;
}
5.HAL库定时器常用函数介绍
HAL库中定时器基本功能函数源码均在stm32f1xx_hal_tim.c中,高级功能函数在stm32f1xx_hal_tim_ex.c中,本小节主要介绍几个常用函数。(以下列举函数可能需要用户调用或修改)。
/*硬件层初始化:时钟、中断,DMA*/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
/*中断方式开启定时器*/
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
/*DMA方式开启定时器*/
HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);
/*开启定时器PWM模式*/
HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
/*获取状态*/
HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim);
/*中断方式开启定时器输入捕获功能*/
HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
6.软件仿真效果展示
通过KEIL软件仿真,查看引脚电平变化,KEIL软件相关设置:
CPU DLL:SARMCM3.DLL
Dialog DLL:DARMSTM.DLL Parameter:-pSTM32F103C8

进入仿真模式:

查看引脚电平变化波形:


波形效果:

上一篇:图文详解STM32单片机远程升级
下一篇:基于STM32+华为云IOT设计的智慧路灯
推荐阅读最新更新时间:2026-03-21 16:04
- Er3105Di 500Ma宽输入电压同步降压稳压器内部默认参数选择典型应用示意图
- 使用 LTC2377CMS-16、16 位、500ksps、低功耗 SAR ADC 的典型应用
- L7806C负输出电压电路的典型应用
- LT3959 的典型应用 - 具有 6A、40V 开关的宽输入电压范围升压/SEPIC/反相转换器
- LPS33W适配器板,标准DIL24插座
- 使用 Analog Devices 的 LT3470AIDDB 的参考设计
- MC33364通用输入电池充电器典型应用电路
- AM2G-2405SH30Z 5V 2W DC/DC 转换器的典型应用
- 用于电池测试解决方案的 ADP1972 降压或升压、PWM 控制器的典型应用
- LT1121IS8-3.3 5V 低压差稳压器的典型应用电路,用于具有关断的电池供电电源

【Follow me第三季第4期】英飞凌CY8CPROTO-063-BLE开发板全任务实战源码
基于 X-Cube-FreeRTOS_Heap4 和 CubeMX 生成 UCPD 项目介绍
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号