提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、前言
脉宽调制PWM在很多自动化领域应用广泛,本文通过配置CubeMX的TIMER的PWM(脉宽调制)初始化实现硬件PMW呼吸灯闪烁
二、准备事项
2.1:板载资料
以STM32F411CEU6为核心的手工模块板
2.2:软硬件准备
a:STM32CubeMX 6.61
b:IAR集成开发环境(8.32以上版本)
c:STlink烧录工具
d:STM32F411CEU6手工模块板
e:LED灯一个
2.3:原理分析
PWM实现呼吸灯效果的原理:使PWM的占空比有小变大,再由大变小的过程,当占空比由小变大过程中亮度逐渐上升,当占空比由大变小过程中亮度逐渐下降,而实现这一过程需要在中断回调函数中改变占空比,具体在函数中表现为index++至index–,具体可看代码中断回调部分。
2.4:代码调用
//PWM中断方式启动定时器
HAL_TIM_PWM_Start_IT(&htim10,TIM_CHANNEL_1);
//产生PWM完成中断回调函数,当PWM产生完成会触发进入中断调用本函数
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
static uint32_t index=0;
static uint8_t step=0;
switch(step)
{
case 0:
{
__HAL_TIM_SET_COMPARE(&htim10,TIM_CHANNEL_1,index); //设置占空比
index++; //增大占空比
if(index>=1000)
{
step=1;
}
}
break;
case 1:
{
__HAL_TIM_SET_COMPARE(&htim10,TIM_CHANNEL_1,index); //设置占空比
index--; //减小占空比
if(index==0)
{
step=0;
}
}
break;
}
}
三、CUBE MX配置
3.1:新建工程
点击File-New project-搜索选择STM32F411CEU6-双击新建工程
3.2:RCC配置
配置单片机外部的晶振作为时钟源 System Core-RCC-High Speed Clock 将默认的Disable选项改为Crystal/Ceramic Resonator
3.3:Clock Configuration配置
选择Clock Configuration时钟树,将默认的HSI改为HSE选项,意思是选择外部的时钟源
将主时钟源改为最大,点击回车确定,系统将自动配置相关外设参数
3.4:Debug串行口调试配置
点击System Core-SYS-Debug,将默认的no debug改为Serial Wire(串行调试)
3.5:Timers配置
点击Timers - TIM10 - 勾选Activated激活通道 - 选择PMW通道1(PMW Generation CH1)
设置分频系数Prescaler 图中设置的100-1可以理解为选出主频中100兆的1兆使用
设置基数Counter Period 图中设置的1000-1可以这样理解:1兆的频率周期是1微秒,也就是每记一个数是1微秒,这里要记1000次,1000个1微秒是1毫秒,所以这里达到的频率是1毫秒
打开NVIC Settings中的使能位,目的是PMW产生完成之后出发中断请求
四、库函数的使用
4.1:编译代码
打开main.c,编译看有没有问题
4.2:查看timer程序初始化
编译完成之后打开timer程序初始化
这里可以看到Cube里面设置的参数在代码中显示
4.3:使用库函数操作PWM
以通道1打开PWM
在用户代码位置使用中断回调函数
五、下载程序验证代码
下载程序后点击go全速运行,此时我们可以看到呼吸灯渐明渐暗的闪烁过程
呼吸灯闪烁视频
呼吸灯
总结
本文通过配置CubeMX的TIMER的PWM(脉宽调制)初始化实现硬件PMW呼吸灯闪烁。想要实现就需要使PWM的占空比由小变大,再由大变小,当在占空比由小变大过程中亮度会逐渐上升,当在占空比由大变小过程中亮度逐渐下降。