0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32呼吸灯中PWM的配置与应用详解

ARM与嵌入式 来源:ARM与嵌入式 2024-04-10 14:55 次阅读

本文通过呼吸灯实验,演示STM32中PWM的配置与应用。

打开CubeMX软件,新建工程。

fed82cca-f677-11ee-a297-92fbcf53809c.png

输入芯片型号。

feeccaf4-f677-11ee-a297-92fbcf53809c.png

根据封装选择列表中的芯片,我的是LQFP144封装,双击此项。

fefabb1e-f677-11ee-a297-92fbcf53809c.png

在Project Manager选项卡中,配置工程名、编译工具,如下图所示。

ff0ebd76-f677-11ee-a297-92fbcf53809c.png

Pinout&Configuration选项卡中,配置System的Debug为Serial Wire,否则可能无法下载程序。

ff235a1a-f677-11ee-a297-92fbcf53809c.png

RCC选择高速外部时钟

ff353438-f677-11ee-a297-92fbcf53809c.png

根据电路原理图,可知LED7对应PC6管脚。

ff4f0e30-f677-11ee-a297-92fbcf53809c.png

ff6094e8-f677-11ee-a297-92fbcf53809c.png

本实验要让PC6管脚输出PWM波形,实现LED7呼吸灯效果。

找到PC6,选中TIM3_CH1。

ff73b780-f677-11ee-a297-92fbcf53809c.png

找到TIM3,通道1配置PWM输出。

ff9044fe-f677-11ee-a297-92fbcf53809c.png

查找STM32参考手册时钟图,找到TIM3时钟的位置在APB1上。

ff99af1c-f677-11ee-a297-92fbcf53809c.png

在CubeMX上配置APB1 Timer定时器时钟频率为72MHz。

ffafb122-f677-11ee-a297-92fbcf53809c.png

配置TIM3_CH1参数,这里涉及到到计算的问题,具体说一下。

ffd4def2-f677-11ee-a297-92fbcf53809c.png

如上图PWM产生原理:

定时器从0开始计数

0-t1时段,输出低电平

t1-t2时段,输出高电平

当定时器计数值达到ARR时溢出,完成一个周期

输出逻辑电平方波,如上图红线所示。

PWM频率计算公式:

PWM频率 = 定时器时钟频率/(AutoReloadRegister + 1)/(PSC + 1)

简单推导一下PWM频率是如何计算的:

一个PWM波周期t2的大小,也就是从0计数到ARR所需要的时间,每一个定时器时钟周期计数一次,总共计数ARR次之后溢出完成一个周期。

ffeee414-f677-11ee-a297-92fbcf53809c.png

占空比计算公式:CCRx/ARR。

回到CubeMX工程,TIM3参数设置如下,

ARR=500-1,PSC=72-1,Pulse=170

占空比大概是Pulse/ARR约等于50%,PWM频率2000Hz。

0005c4fe-f678-11ee-a297-92fbcf53809c.png

保存,生成代码。

001ad33a-f678-11ee-a297-92fbcf53809c.png

打开工程。

002b6fc4-f678-11ee-a297-92fbcf53809c.png

在MDK中main.c添加如下代码。

003aef62-f678-11ee-a297-92fbcf53809c.png

主函数比较简单,i值逐渐增大,占空比随之增大,LED亮度逐渐增加。

当i值为299时,fx值变为1,从下一个循环开始i值开始逐渐减小,占空比随之减小,过程中LED亮度逐渐减弱。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 原理图
    +关注

    关注

    1268

    文章

    6183

    浏览量

    225801
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4901

    浏览量

    209964
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348866
  • 定时器
    +关注

    关注

    23

    文章

    3148

    浏览量

    112059
  • 呼吸灯
    +关注

    关注

    9

    文章

    107

    浏览量

    42483

原文标题:详解STM32呼吸灯的PWM实现

文章出处:【微信号:ARM与嵌入式,微信公众号:ARM与嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于stm32PWM呼吸工程分享

    (NVIC_PriorityGroup_2);//中断优先级分组分两组LED_Init();TIM3_CH1_PWM_Init(500,72-1); //频率是2kHzTIM_SetCompare1(TIM3,i);delay_ms(10); } 全部资料51hei下载地址: 基于
    发表于 07-02 07:51

    基于stm32PWM呼吸工程分享

    (NVIC_PriorityGroup_2);//中断优先级分组分两组LED_Init();TIM3_CH1_PWM_Init(500,72-1); //频率是2kHzTIM_SetCompare1(TIM3,i);delay_ms(10); } 全部资料51hei下载地址: 基于
    发表于 07-06 07:37

    STM32开发入门——呼吸

    stm32性能强大,但其开发难度又显著高于Arduino等单片机。本文将通过“呼吸”程序,介绍stm32
    发表于 07-01 09:54

    定时器中断模拟PWM波实现呼吸

    STM32F4XX 学习日志:定时器中断模拟PWM波实现呼吸前言任务目标解决办法过程定时器配置标准库时钟主频
    发表于 08-09 09:38

    怎么通过PWM来实现呼吸

    说下我是怎么通过这个PWM来实现呼吸的。硬件的准备就不说了,想实现呼吸的你这个硬件配置肯定是
    发表于 08-11 06:17

    PWM配置例程详解

    PWM配置例程详解,测试无误 硬件平台:STM32F10XPWM模块 + JLink + 示波器软件平台:Keil 4 一、基础知识首先,根据芯片的型号,
    发表于 08-23 09:04

    STM32Cube如何配置PWM呼吸

    STM32Cube如何配置PWM呼吸
    发表于 11-23 07:17

    STM32 PWM是如何去控制呼吸的程序呢

    PWM的工作原理是什么?STM32 PWM是如何去控制呼吸的程序呢?
    发表于 11-26 07:00

    配置引脚PWM初始化实现简易呼吸

    目录API (机翻)函数上机实战配置引脚PWM初始化,实现简易呼吸的效果实验结果完整代码myPWM.cmyPWM.hmyTask.cmyTask.hmain.cmain.h平台:Co
    发表于 12-07 07:31

    基于stm32 f103的pwm呼吸程序代码分享

    基于stm32 f103的pwm呼吸程序代码分享
    发表于 12-14 07:52

    PWM实现呼吸的应用

    stm32实现PWM最简单方法前言一、PWM概念二、PWM应用输出比较功能框图三、PWM呼吸
    发表于 01-21 13:18

    如何对STM32F030C8T6单片机PWM呼吸的寄存器进行配置

    如何对STM32F030C8T6单片机PWM呼吸的寄存器进行配置呢?其配置步骤有哪些?
    发表于 02-14 07:33

    STM32呼吸的原理是什么

    前段时间学习stm32的时候就做过呼吸实验,浏览了一些博客后,做下总结呼吸原理其实是利用pwm
    发表于 02-21 07:26

    请问一下STM32 PWM是如何去实现呼吸设计的

    STM32 PWM实现呼吸使用STM32F103ZET6 定时器4 CH2通道产生PWM波,在
    发表于 02-21 07:30

    STM32 使用PWM实现呼吸

    STM32 PWM实现呼吸灯使用STM32F103ZET6 定时器4 CH2通道产生PWM波,在GPIOD,GPIO_PIN13引脚LED1
    发表于 12-24 19:41 55次下载
    <b class='flag-5'>STM32</b> 使用<b class='flag-5'>PWM</b>实现<b class='flag-5'>呼吸</b>灯