演示STM32中PWM的配置与应用

发布者:Xinmei最新更新时间:2024-02-03 来源: elecfans关键字:STM32  PWM  配置 手机看文章 扫描二维码
随时随地手机看文章

打开CubeMX软件,新建工程。

d4804d3e-9266-11ed-bfe3-dac502259ad0.png

输入芯片型号。

d4998948-9266-11ed-bfe3-dac502259ad0.png

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

d4a8b6de-9266-11ed-bfe3-dac502259ad0.png

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

d4c024c2-9266-11ed-bfe3-dac502259ad0.png

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

d4d80bbe-9266-11ed-bfe3-dac502259ad0.png

RCC选择高速外部时钟。

d4ed7742-9266-11ed-bfe3-dac502259ad0.png

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

d50aab5a-9266-11ed-bfe3-dac502259ad0.png

d52e0cf8-9266-11ed-bfe3-dac502259ad0.png

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

找到PC6,选中TIM3_CH1。

d5705efa-9266-11ed-bfe3-dac502259ad0.png

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

d589b832-9266-11ed-bfe3-dac502259ad0.png

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

d5bb96d6-9266-11ed-bfe3-dac502259ad0.png

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

d5e2b6a8-9266-11ed-bfe3-dac502259ad0.png

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

d5fffb1e-9266-11ed-bfe3-dac502259ad0.png

如上图PWM产生原理:

定时器从0开始计数

0-t1时段,输出低电平

t1-t2时段,输出高电平

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

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

PWM频率计算公式:


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


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

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

d60eef3e-9266-11ed-bfe3-dac502259ad0.png

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

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


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


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

d6289bf0-9266-11ed-bfe3-dac502259ad0.png

保存,生成代码。

d655de94-9266-11ed-bfe3-dac502259ad0.png

打开工程。

d6674d00-9266-11ed-bfe3-dac502259ad0.png

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

d68529b0-9266-11ed-bfe3-dac502259ad0.png

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

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

编译下载到开发板,可以看到如下呼吸灯效果。


关键字:STM32  PWM  配置 引用地址:演示STM32中PWM的配置与应用

上一篇:基于Linux的kfifo移植到STM32
下一篇:基于STM32单片机的电源设计

推荐阅读最新更新时间:2024-11-01 20:56

高压变频器电动机保护配置
    根据国家能源政策的要求,节能减排工作已全面展开,而在大型火力发电厂,厂用电率的降低势在必行。对于占厂用电绝大部分的高压电动机来说,节能领域的重要技术措施就是高压变频技术的应用。随着电力电子技术的发展,变频器在电厂得到了广泛应用。目前的新建电厂,重要辅机如风机、水泵等,一般均要求考虑配置变频器拖动;越来越多的已建电厂正在进行或已完成高压电动机采用变频器的改造。高压电动机采用采用变频器拖动后,电动机保护如何配置才能保证机组安全可靠的运行,成为电厂、设计院、保护厂家关注的问题。     1 传统电动机保护配置     异步电动机的故障有定子绕组相间短路故障、绕组的匝间短路故障和单相接地故障;不正常运行状态主要有过负荷、堵转、起动时
[电源管理]
高压变频器电动机保护<font color='red'>配置</font>
教你如何轻松写单片机的指针
摘要:大家想过没有我们用keil写单片机的代码,你的函数啊、变量啊最终都放在了哪里?我们一直说的内存五区,到底是哪五区?到底放在芯片的哪个地方呢?还有为什么你学完C语言指针和结构体,32单片机里面的关于结构体指针的内容还是搞不清楚呢?如果你有这些问题,今天就带你研究研究! 这张图学过STM32单片机的小伙伴应该都不陌生,我们看到的STM32芯片已经是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的CPU与主板、内存、显卡、硬盘的关系。芯片和外设之间通过各种总线连接。连接被控总线的是FLASH,RAM和片上外设,这些功能部件共同排列在一个4GB的地址空间内。上面这些张图是STM32F40XXX系
[单片机]
教你如何轻松写单片机的指针
STM32中的PWM的频率和占空比的设置
网上看到一篇文章,不是很完整,但是有助于我理解,个人觉得还可以,具体的代码,网上有很多,大家可以参考参考计算一下。 下面的这个是stm32的定时器逻辑图,上来有助于理解: TIM3的ARR寄存器和PSC寄存器, 确定PWM频率。 这里配置的这两个定时器确定了PWM的频率,我的理解是:PWM的周期(频率)就是ARR寄存器值与PSC寄存器值相乘得来,但不是简单意义上的相乘,例如要设置PWM的频率参考上次通用定时器中设置溢出时间的算法,例如输出100HZ频率的PWM,首先,确定TIMx的时钟,除非APB1的时钟分频数设置为1,否则通用定时器TIMx的时钟是APB1时钟的2倍,这时的TIMx时钟为72MHz,用这个TIMx时钟72
[单片机]
<font color='red'>STM32</font>中的<font color='red'>PWM</font>的频率和占空比的设置
关于STM32单片机移植FATFS
使用单片机的朋友都知道单片机一般提供的ROM和RAM都比较小。就算是STM32这样的提供256KB flash和64KB RAM的。一旦你需要存一些数据量比较大的文件的时候还是不够用的。一般可以通过外扩SD和nand flash来实现大容量存储。相对来说SD卡的使用更加方便一些。使用过nand flash的也许会知道nand flash有坏块,使用的时候需要做坏块管理,还有就是需要做损耗均衡。不然nand flash很容易就会坏掉。 下面说说SD卡。SD卡驱动有两种方式。一种是SPI驱动方式。还有一种是SDIO驱动方式。SPI驱动时只需要4更线:CLK、SD_CS、MISO、MOSI。SDIO则需要CLK、CMD、Data0、Da
[单片机]
STM32时钟使能函数
最近在学习STM32单片机,之所以选择这款单片机作为入门原因有以下几点: 1. 配套资料详细 2. 工作中正在用这款单片机,有疑问可以请教同事,熟悉了这款单片机能更好服务于工作 3. ST单片机非常火爆,很多公司都在用 对于单片机小白的我,想要学好一款单片机,不仅仅是一时的冲动,凭借的更是长期的毅力和兴趣,这点觉悟必须具备。为什么要写博文呢?因为怕忘记,有时候花很长时间琢磨的函数,再见面只有相见无言唯有泪千行!!!所以做笔记尤其重要啊!!! 使用一个外设时,必须先使能它的时钟,这些时钟函数可大致分为三类:一)外设时钟使能函数 二)时钟源和倍频因子配置函数 三)外设复位函数 外设时钟使能函数又包括外
[单片机]
<font color='red'>STM32</font>时钟使能函数
stm32中断函数改变全局变量值
先描述下问题: 当检测到有按键按下时,实现PA.0led闪亮,函数肯定不能在中断服务程序里写,就想着在进入中断函数后改变变量biaozhi的值(0变成1),然后main中while循环一直检测biaozhi的值若为1,则调用函数; 这里只说下关键的问题: 在main.c文件中声明:u8 biaozhi=0; 后在stm32f10x_it.c文件中 再写一行:volatile u8 biaozhi; 这样两个文件就可以同用变量biaozhi 了 !
[单片机]
STM8S 三种时钟源的配置HSE\HSI\LSI的配置
1. 关于HSE的时钟配置为主时钟 static void CLK_Config(void) { CLK_DeInit(); // 初始化 CLK_HSECmd(ENABLE); //使能HSE CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE); //切换HSE 并关闭其他时钟 为自动模式 /*Enable CSS interrupt */ CLK_ITConfig(CLK_IT_CSSD, ENABLE); /* Enab
[单片机]
STM8S 三种时钟源的<font color='red'>配置</font>HSE\HSI\LSI的<font color='red'>配置</font>
STM32基础之串口通信
串口通讯协议简介: 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。 串行通信的分类 1、按照数据传送方向,分为: **单工:**
[单片机]
<font color='red'>STM32</font>基础之串口通信
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved