【意法半导体 STM32 WL55】PWM呼吸灯
本文介绍了意法半导体 Nucleo-WL55JC 开发板的通过硬件 PWM 实现 LED 呼吸灯的项目设计。
项目方案
- 使用 STM32CubeMX 创建工程,使能硬件定时器 TIM2 - CH4 和 USART2;
- STM32CubeIDE 编译和调试工程、固件上传;
- 实现板载 LED3 呼吸灯,并串口打印 PWM 占空比。
工程创建
使用 STM32CubeMX 快速创建工程。
流程
- 打开 STM32CubeMX 软件,新建 ST 板卡工程,搜索 NUCLEO-WL55JC2 选中目标板卡,开始工程,选择默认外设配置(注意不使用 BSP 板级支持包);
- 时钟配置:采用默认设置,系统时钟频率 4MHz;

- Pinout & Configuration 标签下选择 Connectivity - 使能 USART2 - 选择 Asynchronous 异步通信模式;
- Pinout & Configuration 标签下选择 Timers - 使能 TIM2 ;
- 配置 PWM 参数,板载 LED3 连接 PB11 高电平点亮,对应定时器 2 通道 4,并使能自动重装载;
- 频率 = CK_PSC/[(PSC+1) (ARR+1)],根据系统时钟 PSC 设为 3
- 占空比 = CCR/(ARR+1),这里 ARR 设为 999
- 分辨率 = 1/(ARR+1)
- 配置完成后,进入 Project Manager 标签栏,进行项目命名、保存路径设置、编译器选择等操作;
- 点击 Generate Code 按钮,使用 STM32CubeIDE 或 Keil 打开目标工程;
- 编译工程,0 error, 0 warning .
解析
对于硬件 PWM 使用定时器实现,对于板载 LED,根据原理图可知,分别对应 PB9、PB11、PB15
考虑到定时器引脚分配,采用 TIM2 的频道 4
由 STLINK 虚拟串口对应的原理图可知,需打开 USART2 实现USB串口通信
工程代码
printf 串口重定向
/* USER CODE BEGIN Includes */
#include <stdio.h>
/* USER CODE END Includes */
/* USER CODE BEGIN PD */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart2, (uint8_t*)&ch,1,HAL_MAX_DELAY);
returnch;
}
/* USER CODE END PD */ 复制代码
main 主函数
intmain(void)
{
/* USER CODE BEGIN 1 */
uint16_tpwm_duty=0;
uint8_tdirection=0;
/* USER CODE END 1 */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM2_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4); // initialized TIM1
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if (direction)
{
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_4, pwm_duty--);
if(pwm_duty==0)
direction=0;
}
else
{
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_4, pwm_duty++);
if(pwm_duty==1000)
direction=1;
}
printf("%d\r\n",pwm_duty);
HAL_Delay(1);
}
/* USER CODE END 3 */
} 复制代码
编译程序,连接开发板并运行程序,可实现固件上传和程序自动执行。
STLINK固件升级
首次调试开发板需要升级板载 STLINK 的固件
- 对于 STLINK-V2 ,打开 STM32CubeProg 软件,点击右侧 Firmware uograde 按钮,根据提示自动升级即可;

- 对于新版的 STLINK-V3 升级需要注意选择 MCO 晶振输入方案
该项目使用的开发板对应的 STLINK 型号为 V3E,因此固件升级选择 HSE/3 (8.33MHz) 选项。
详见技术文档。
效果
红色 LED3 呈现呼吸灯效果
打开串口调试助手,配置串口参数,打开串口,接收虚拟串口发送的 PWM 占空比数据
总结
本文介绍了意法半导体 Nucleo-WL55JC 开发板的通过硬件 PWM 实现 LED 呼吸灯的项目设计,为 STM32WL 系列芯片的开发和应用提供了参考。