STM32CubeMX教程:使用HAL库实现定时器生成PWM基础
目录:
一、STM32CubeMX 配置
1、选择定时器通道:
此处选择 TIM2 的 Channel1 通道,时钟源设置为内部时钟,设置 Channel1 为 PWM 产生:
解析:
使能 TIM2 全局中断:
2、设置 TIM2 channel1 的预分频器、自动重装等值:
一、向上计数模式(Up-Counting):
在向上计数模式下,PWM 计数器从 0 开始递增计数,直到达到预设的自动重装值(ARR) 当计数器达到 ARR 值,它将产生一个计数器溢出中断事件,计数器计数值置 0,重新开始计数 PWM 的输出电平会根据计数器的值与比较匹配寄存器(CCR)之间的关系来确定。通常,当计数器的值小于 CCR 时,PWM 输出高电平;当计数器的值大于或等于 CCR 时,PWM 输出低电平
二、向下计数模式(Down-Counting):
在向下计数模式下,PWM 计数器从预设的自动重装值(ARR)开始递减计数,直至计数到 0 当计数器计数至 0 值,它将产生一个计数器溢出中断事件,计数器重新从 ARR 开始递减计数 PWM 的输出电平也会根据计数器的值与 CCR 之间的关系来确定,与向上计数模式类似
三、上下计数模式(Up-Down Counting):
在上下计数模式下,PWM 计数器首先从 0 开始递增计数,达到预设的自动重载值(ARR)后,计数器从 ARR 开始递减计数,直到达到 0 值。这个过程会不断重复,形成一个周期性的上下计数循环 PWM 的输出电平在计数器的值小于 CCR 时输出高电平,而在计数器的值大于或等于 CCR 时输出低电平
PWM 频率: Freq = CK_PSC / (PSC+1) / (ARR+1)
PWM 占空比: Duty = CRR / (ARR+1)
PWM 分辨率: Reso = 1 / (ARR+1)
二、keil5 进一步编程
1、开启定时器2 通道 1 的 PWM 输出:
/* USER CODE BEGIN TIM2_Init 2 */
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
/* USER CODE END TIM2_Init 2 */**
2、改变 CCR 值(改变占空比):
占空比:CRR / (ARR + 1)
/* USER CODE BEGIN 2 */
int speed = 500;
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, speed);
/* USER CODE END 2 */
或者:
/* USER CODE BEGIN 2 */
int speed = 500;
TIM2->CCR1 = speed;
/* USER CODE END 2 */
参考文章
【STM32CubeMX——PWM配置】——CSDN @w我想吃西瓜n
作者:~莘莘