码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • STM32 — PWM介绍和使用PWM实现呼吸灯效果


    目录

    PWM介绍

    PWM输出模式:

    PWM占空比:

    PWM周期与频率公式:

    使用PWM点亮LED灯实现呼吸灯效果

    1. 在 SYS 选项里,将 Debug 设为 Serial Wire​编辑

    2. 将 RCC 里的 HSE 设置为 Crystal/Ceramic Resonator

    3. 时钟配置

    4.配置定时器设置PWM,有效电平设置为Low(低电平),因为LED灯低电平亮

    5.示例代码:


    PWM介绍

    STM32F103C8T6 PWM资源:

    高级定时器(TIM1):7路

    通用定时器(TIM2~TIM4):各4路

    PWM输出模式:

    • PWM模式1:在向上计数时,一旦 CNT < CCRx 时输出为有效电平,否则为无效电平; 在向 下计数时,一旦 CNT > CCRx 时输出为无效电平,否则为有效电平。
    • PWM模式2:在向上计数时,一旦 CNT < CCRx 时输出为无效电平,否则为有效电平; 在向 下计数时,一旦 CNT > CCRx 时输出为有效电平,否则为无效电平。

    PWM占空比:

    是一个脉冲周期内,高电平的时间与整个周期时间的比例

    由TIMx_CCRx寄存器决定,通常设置CNT < CCRx为有效电平中的高电平,则CRR/ARR决定占空比,例如CRR为100,ARR为500,则占空比为20%

    PWM周期与频率公式:

    假如:PSC = 71Hz,ARR = 499Hz,Tclk = 72M Hz,

    则T为 72 x 500 / 72000000 = 0.5ms

    频率为 1 / T = 2kHz

    使用PWM点亮LED灯实现呼吸灯效果

    LED灯为什么可以越来越亮,越来越暗?

    这是由不同的占空比决定的。

    如何计算周期/频率?

    假如频率为 2kHz ,则:PSC=71,ARR=499,上面已经讲过

    LED灯连接到哪个定时器的哪一路?

    通过看产品手册:

    打开CubeMX配置STM32F103C8T6

    1. 在 SYS 选项里,将 Debug 设为 Serial Wire

    2. 将 RCC 里的 HSE 设置为 Crystal/Ceramic Resonator

    3. 时钟配置

    4.配置定时器设置PWM,有效电平设置为Low(低电平),因为LED灯低电平亮

    5.示例代码:

    1. // 使能 Timer4 第3通道 PWM 输出
    2. HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);
    3. uint16_t pwmVal = 0; // 调整PWM占空比
    4. uint8_t swap = 1; // 设置改变方向。1:占空比越来越大;0:占空比越来越小
    5. while (1)
    6. {
    7. HAL_Delay(1);
    8. if(swap)
    9. pwmVal++;
    10. else
    11. pwmVal--;
    12. if(pwmVal > 500)
    13. swap = 0;
    14. else if(pwmVal == 0)
    15. swap = 1;
    16. //修改比较值,修改占空比
    17. __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, pwmVal);
    18. }
  • 相关阅读:
    创新能力 | 产品经理实践中常犯的七大错误
    三行Python代码即可将视频转Gif
    Qt 资源文件
    Envoy熔断限流实践(一)基于Rainbond插件实现熔断
    Golang实现组合模式和装饰模式
    MyBatis:自定义分页插件
    rabbitMQ学习-发布和确认
    Spring Boot 3.x快速入门
    Kerberos
    Rust中FFI编程知识点整理总结
  • 原文地址:https://blog.csdn.net/m0_74712453/article/details/134065861
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号