记录4——stm32f411ceu6之PWM制作呼吸灯(+proteus仿真实验)

编程入门 行业动态 更新时间:2024-10-05 09:33:59

记录4——stm32f411ceu6之PWM制作<a href=https://www.elefans.com/category/jswz/34/1756692.html style=呼吸灯(+proteus仿真实验)"/>

记录4——stm32f411ceu6之PWM制作呼吸灯(+proteus仿真实验)

目录

  • PWM制作呼吸灯
    • PWM简介
    • 任务
    • 工程配置
    • 代码实现
    • Proteus仿真
      • 硬件连接图
      • 仿真效果

PWM制作呼吸灯

PWM简介



如实例

任务

让LED实现从熄灭逐渐变亮,再从最亮逐渐变暗至熄灭,不断循环周期为4s。(使用定时器产生PWM,PWM周期为20ms.)

工程配置

由于控制LED的PC13无tim,可将PC13与拥有tim2_ch1的PA0用杜母线连接,可以实现同样的效果。
PSC=9999,ARR=199实现PWM周期为20ms
设置Pulse(CRR)为0,表示PWM信号最初占空比为0%

代码实现

/* USER CODE BEGIN PV */
uint16_t Duty=0;//占空比
uint16_t Step=20;//步进值
/* USER CODE END PV */
/* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);//启动定时器2的通道1输出PWM信号/* USER CODE END 2 */

一次由熄灭至最亮过程进行了200(ARR)/20(Step)=10次,时间应为4/2=2s=2000ms,则每次+Step后应该延迟2000/10=200ms.

/* USER CODE BEGIN 3 */for(Duty =0;Duty <=200;Duty=Duty+Step)//修改占空比{__HAL_TIM_SET_COMPARE (&htim2 ,TIM_CHANNEL_1 ,Duty );HAL_Delay (200);//延时200ms}for(Duty =200;Duty > 0;Duty=Duty-Step)//当占空比为100%时,继续修改占空比{__HAL_TIM_SET_COMPARE (&htim2 ,TIM_CHANNEL_1 ,Duty );HAL_Delay (200);}

PS:不过,将PC13与拥有tim2_ch1的PA0用杜母线连接后,呼吸灯最亮时刻并没有之前没有PWM时的大,可能是达到100%的时间只是一瞬间,肉眼难以观察出来吧。
其实两个引脚短接可以实现完整实现PWM效果,我是之前给PC13 配置了output模式,实际上不需要任何配置,只需通过PA0电平控制PC13即可。

Proteus仿真

  • 由于proteus的stm32类型有限,此处以f103c6为例,模拟仿真,相关配置参照前面的方法利用CubeMX+Keil+Proteus即可。

  • 开启TIM2 Channel2的PWM,连接的选用的是PA1引脚

硬件连接图

由于一直用的是同一个工程,前面的实验所连接的引脚与器件未删除,该实验只需要PA1一个引脚即可,其他标注请自行忽略

仿真效果

proteus好像不能实现呼吸灯的效果,仅仅只是LED不断亮灭,因此用示波器来显示其波形。

更多推荐

记录4——stm32f411ceu6之PWM制作呼吸灯(+proteus仿真实验)

本文发布于:2024-02-28 04:26:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1767763.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:呼吸   PWM   proteus

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!