赞
踩
脉冲宽度调制(PWM) 是一种数字信号,最常用于控制电路。该信号在预定义的时间和速度中设置为高(5v或3.3v)和低(0v)。通常,我们将PWM的高电平称为1,低电平为0。
硬件连接:确保正确连接LED到STM32的PWM输出引脚,适当配置电流限制电阻和电源,以保证硬件安全和正常工作。
CubeMX配置:使用CubeMX创建项目并配置硬件引脚、定时器以及PWM通道,以便产生呼吸灯效果所需的PWM信号。
代码编写:生成代码并在主循环中编写控制PWM占空比的代码,以实现呼吸效果。可以使用HAL库函数或直接寄存器操作来控制PWM。
呼吸效果算法:选择合适的算法来实现呼吸效果,可以是线性或非线性的,如指数函数。控制占空比的逐渐改变以实现明亮度的变化。
调试和优化:监测PWM占空比的变化,确保其符合预期,使用调试工具来辅助。优化代码以减少功耗,确保频率和占空比合适。
安全性考虑:确保采取适当的安全措施,防止损坏LED,包括电流限制电阻。考虑温度问题,确保硬件不会过热。
直接开始
我使用的是stm32f103rct6这块板子,我们直接开始
首先打开cubemx
创建工程,根据实验需求按以下步骤进行设置
数据根据自己需求调整
到这里我们开始对工程的基本配置
首先开启晶振。
然后开始配置时钟树。
接下来开始pwm。
开启定时器二频道一的pwm。
接下来我们基本配置完成了。
下面开始保存工程,打开工程了
完成创建过后
打开工程
我们需要在这里添加如下代码
uint16_t pwmVal = 0; //占空比大小(CCRx的大小)
uint8_t direction = 1; //呼吸灯方向: 1. 越来越亮 2. 越来越暗
在这里添如下
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
这里添加如下
HAL_Delay(3); //控制呼吸灯呼吸速率
//控制占空比大小,即修改CCRx的大小
if(direction){
pwmVal++;
}else{
pwmVal--;
}
//设置了ARR为499,因此每计数500为一个周期
if(pwmVal > 500){
direction = 0; //改变呼吸灯方向
}else if(pwmVal == 0){
direction = 1; //改变呼吸灯方向
}
//修改定时器4通道三的PWM的占空比
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,pwmVal)
到这里就配置好了
我们就完成了一个pwm呼吸灯的配置了
采用的定时器二频道二
io口如何产生一个pwm,无非就是做一个高低电平周期性的变化,这种思想很重要,确定频率就可以确定周期(T=1/f)也就是在一个周期内产生pwm的时间可以确定下来了,如何改变占空比确定了时间,高电平的时间不就是想要的占空比么,比如要产生一个频率1khz,占空比为70%的pwm,根据频率我们知道了周期为1ms,产生一个占空比为70%的不就是0.7ms的时间给高电平么,我们用定时器中断的方式,使0.1ms产生一次中断,计数中断次数,中断处理函数前七次中断都给高电平就ok了
呼吸灯如下:
设置引脚观察波形
标为bit显示,用绿色的线表示,得到的波形结果如下图所示:
学会使用STM32微控制器和CubeMX配置PWM呼吸灯有以下用途和益处:
嵌入式系统开发:这个实验教授了基本的嵌入式系统开发技能,包括硬件连接、外设配置、以及编写嵌入式软件。
LED控制:掌握PWM控制LED亮度的方法,这是许多嵌入式应用中的基本要求,如照明控制、显示屏背光控制等。
效果演示:PWM呼吸灯是一种常见的视觉效果,可以用于演示、展示或艺术装置,使产品更具吸引力。
电源管理:了解如何使用PWM控制LED可以有助于优化电源管理,减少功耗,延长电池寿命。
学习嵌入式工具:通过使用CubeMX,您学会了使用流行的嵌入式开发工具,这对日后的项目开发非常有帮助。
扩展应用:这个实验的基础可以应用于更复杂的项目,如温控系统、无人机控制、机器人等,这些项目需要精确的定时和控制。
培养编程技能:学习如何编写嵌入式代码可以提高编程技能,并为未来的职业发展打下坚实基础。
总之,学会配置PWM呼吸灯不仅是一个有趣的实验,还是进入嵌入式开发领域的入门门槛,有着广泛的应用前景。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。