脉冲宽度调制模式(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

进入仿真模式:

查看引脚电平变化波形:


波形效果:

-
PWM
+关注
关注
116文章
5847浏览量
223870 -
STM32
+关注
关注
2305文章
11123浏览量
371211 -
定时器
+关注
关注
23文章
3361浏览量
121770 -
呼吸灯
+关注
关注
10文章
116浏览量
43844 -
kell
+关注
关注
0文章
3浏览量
2202
发布评论请先 登录
基于STM32CUBEMX驱动低压步进器电机驱动器STSPIN220(3)----定时器中断产生指定数量脉冲
Stm32CubeMx基本定时器的概念
【MCU】基于STM32CubeMX定时器中断实现LED闪烁
STM32CUBEMX配置教程(十二)STM32的定时器触发的固定频率ADC采样(使用DMA)
STM32CUBEMX配置教程(十三)STM32的定时器触发的固定频率DAC输出(使用DMA)
STM32CubeMX实战教程(五)——通用定时器(PWM输出)
STM32CubeMX_定时器中断_PWM
STM32CUbeMX之两路互补pwm波 以及死区时间设置
STM32CUBEMX开发GD32F303(12)----输出PWM及修改PWM频率与占空比
STM32CUBEMX开发GD32F303(13)----定时器TIM捕获PWM测量频率与占空比

STM32CubeMX之定时器PWM输出
评论