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亮度逐渐减弱。

审核编辑:黄飞

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

    关注

    1296

    文章

    6326

    浏览量

    233207
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5160

    浏览量

    213544
  • STM32
    +关注

    关注

    2266

    文章

    10880

    浏览量

    355083
  • 定时器
    +关注

    关注

    23

    文章

    3242

    浏览量

    114576
  • 呼吸灯
    +关注

    关注

    10

    文章

    110

    浏览量

    42713

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

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

收藏 人收藏

    评论

    相关推荐

    使用STM32CubeMX输出PWM,并制作呼吸效果

    概述 本篇文章主要介绍如何使用STM32CubeMX输出PWM,并制作呼吸效果。 硬件准备 首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板: 选择芯片型号
    发表于 09-04 10:38

    基于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

    怎么通过PWM来实现呼吸

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

    STM32Cube如何配置PWM呼吸

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

    PWM实现呼吸的应用

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

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

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

    基于stm32PWM输出呼吸(包括stm32呼吸代码)

    本文主要介绍了基于stm32pwm呼吸设计与实现。使用定时器来控制I/O口输出PWM波形,从而驱动LED
    的头像 发表于 03-28 16:23 7.1w次阅读
    基于<b class='flag-5'>stm32</b>的<b class='flag-5'>PWM</b>输出<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>(包括<b class='flag-5'>stm32</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>代码)

    STM32实现PWM呼吸的程序合集免费下载

    本文档的主要内容详细介绍的是STM32实现PWM呼吸的程序合集免费下载。
    发表于 03-19 08:00 16次下载
    <b class='flag-5'>STM32</b>实现<b class='flag-5'>PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的程序合集免费下载

    STM32_PWM呼吸

    全面屏发展,因此很多手机取消了呼吸这一功能,取而代之的是息屏显示)2、什么是PWM?PWM:Pulse Width Modulation,脉冲宽度调制,是利用微处理器的数字输出来对模
    发表于 11-26 12:21 20次下载
    <b class='flag-5'>STM32_PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>

    STM32PWM控制呼吸实验

    目录一.PWM简介PWM生成方法二、PWM控制单色LED—单色呼吸硬件说明代码分析进行验证示波器查看波形
    发表于 12-08 14:51 32次下载
    <b class='flag-5'>STM32</b>—<b class='flag-5'>PWM</b>控制<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>实验

    STM32 使用PWM实现呼吸

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

    proteus仿真stm32控制呼吸

    proteus仿真stm32控制呼吸设计思路:采用stm32f103r6为主控芯片,及led-green;时钟源为晶振为8M的系统内部时钟;使用的定时器为TIM2,并且使用
    发表于 01-17 10:13 46次下载
    proteus仿真<b class='flag-5'>stm32</b>控制<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>

    stm32使用延时实现呼吸寄存器版

    stm32使用延时实现呼吸(寄存器)该实验是使用STM32F103C8T6实现,使用寄存器编程。呼吸
    发表于 01-18 10:33 0次下载
    <b class='flag-5'>stm32</b>使用延时实现<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>寄存器版

    通过STM32实现PWM呼吸的教程

    顾名思义,就是一个的亮度的变化,由亮变暗,从暗变亮,有一个渐变,规律的变化,像是人的呼吸,是呼吸,所以叫
    的头像 发表于 07-26 15:20 1.2w次阅读
    通过<b class='flag-5'>STM32</b>实现<b class='flag-5'>PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的教程