说明
本文将以STM32F103ZET6单片机为例讲解PWM(脉宽调制),将以定时器3作为信号发生器,引脚PB5作为输出
配置部分
新建工程
- 搜索单片机型号(STM32F103ZET6)
- 选择单片机
- 创建工程
配置系统时钟
- 选择高速时钟(外部陶瓷晶体振荡器)
- 选择低速时钟(外部陶瓷晶体振荡器)
配置PWM
- 选择TIM3
- 选择通道2
- 配置引脚参数
- 可以参考定时器配置章节(STM32CubeMX——定时器配置)
- 可以参考定时器配置章节(STM32CubeMX——定时器配置)
配置时钟树
- 选择时钟设置界面
- 将HCLK配置到72MHz,系统自动配置各个时钟
项目文件设置
- 选择文件设置选项卡
- 设置项目名称
- 设置存储位置
- 选择所用IDE
- 选择为每个功能生成一个.c和.h文件
- 生成代码
代码部分
代码说明
//启动PWM
/*
参数:
1.定时器号
2.通道号
*/
HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
//停止PWM
/*
参数:
1.定时器号
2.通道号
*/
HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
//设置PWM占空比(宏定义)
/*
参数:
1.定时器号
2.通道号
3.占空比值
*/
#define __HAL_TIM_SetCompare(__HANDLE__, __CHANNEL__, __COMPARE__)
应用举例
uint32_t i=20000;//占空比的变量
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);//启动PWM
while (1){
i-=10;
if(i<10){
i=20000;
}
__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_2,i);//设置PWM占空比值
HAL_Delay(1);
}
备注
- 占空比值为脉冲数
- 举例:本文章配置的定时器为72分频,自动重装载值为20000,则占空比为50%时应设置PWM占空比值为20000x50%=10000