目录:
- 一、STM32CubeMX 配置
- 1、选择定时器通道:
- 2、设置 TIM2 channel1 的预分频器、自动重装等值:
- 二、keil5 进一步编程
- 1、开启定时器2 通道 1 的 PWM 输出:
- 2、改变 CCR 值(改变占空比):
- 参考文章
一、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