STM32 HAL库 定时器PWM输出

mac2025-07-15  2

STM32CUBEMX系列教程:定时器PWM输出实验


扫描以下二维码,关注公众号雍正不秃头获取更多STM32资源及干货!


环境: 1、STM32CubeMX 5.3 2、Atollic TrueSTUDIO for STM32 9.3.0 3、战舰迷你板(stm32f103rb)

本章效果为LED灯由PWM控制,由暗到亮,再由亮到暗,反复循环。


(一)配置LED灯引脚为输入模式

(二)配置定时器

频率的计算方法: 定时器配置频率为10KHZ,所以ARR=99,PSC=71,占空比范围就是ARR的范围:0-100,100就是全为高: 初始化定时器后要使能PWM输出:

HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);

改变捕获比较值,也就是改变占空比:

__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, val);

正点原子mini板的PA8是led灯,定时器3的PWM输出通道2是PA7,所以在板子上用跳线帽将PA8和PA7连接起来即可:

int main(void) { uint8_t mode = 1; uint32_t led0pwmval = 0; int i = 0; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM3_Init(); MX_USART1_UART_Init(); HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); // 使能PWM输出 while (1) { if (mode) led0pwmval++; else led0pwmval--; if (led0pwmval >= 100) mode = 0; if (led0pwmval == 0) mode = 1; __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, led0pwmval); // 改变占空比 HAL_Delay(10); i++; if (i >= 100) { i = 0; HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); } } }

ends…

最新回复(0)