基于STM32G431嵌入式学习笔记——八、PWM脉冲输出(基于第12届蓝桥杯节选PA7作引脚)

本文详细介绍了STM32G4系列微控制器中如何配置PWM输出,以满足特定的脉冲信号需求。从PWM工作原理、时钟信号关联到CubeMX中的配置步骤,以及在实际编程中的应用,作者通过一个蓝桥杯竞赛题目为例,展示了如何在特定条件下实现2KHz、20%占空比的PWM输出。同时,文章还讨论了两种PWM模式的区别,并提供了两种不同的PWM控制函数实现方式。
一、真题引入

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

简言之,关于脉冲输出的题目要求如下:
①默认低电平
②按下key4,切换低电平/脉冲信号
③输出脉冲器件LED2点亮,否则熄灭。

二、基础知识
1.PWM工作原理

在这里插入图片描述

2.与时钟信号的关联

具体可以查阅STM32G4系列微控制器参考手册
在这里插入图片描述28-31章均为时钟timer相关资料,我们可以向右方一样查找该类型定时器是否支持PWM,从而判断该定时器是否能调用引脚实现脉冲输出。【实际上只有第31章的定时器不支持PWM输出功能】
对于我们用户来说,各种输出都是来自于引脚,因此PWM的配置本质依旧是引脚配置

3.生活中的PWM

我们的可变亮度的台灯本质是利用了PWM输出,通过调节占空比,实现不同占空比下不同平均电压的输出,从而有了灭->暗->亮->晃眼睛。

三、PWM在CubeXM中的配置

该部分是第12届蓝桥杯最后一部分的题目内容,因此我们可以基于第六节的环境进行修改。

如何在CubeMX中判断哪些定时器支持PWM?
如图所示,众多的定时器channel中可以选择功能,仅需检查是否有PWM选项
在这里插入图片描述
但是本题对引脚做出了限制
在这里插入图片描述
因此选择PA7进行配置

在这里插入图片描述

实际上PWM是多路输出的,因此在定时器中会有许多通道,而我们仅需要选择其中一个channel即可,且实际上上面四个通道任选其一均可
如果题目没有指定某引脚,我们平时练习可以只固定一个熟练的引脚一直使用(我固定使用PA7的通道2)

①记得在该通道选定PWM generation
②配置时钟源(internal clock内部时钟)
在这里插入图片描述

操作实现了2K的输出频率
具体计算如下:
时钟频率:80MHz=8∗107Hz80MHz=8*10^7Hz80MHz=8107Hz
预分频器分频:8∗107Hz/80=106Hz8*10^7Hz/80=10^6Hz8107Hz/80=10

具体操要求如下: 以给定频率输出脉冲脉冲数无限制 以给定频率f、输出n个脉冲 相对定位 相对定位+绝对定位 脉冲输出PORTA.0 方向信号输出PORTB.5 模仿PLC定位指令 可以为简易运动控制器控制伺服电机 发脉冲两种目的 1)速度控制 2)位置控制 速度控制目的和模拟量一样,没有什么需要关注的地方 发送脉冲方式为PWM,速率稳定而且资源占用少 stm32位置控制需要获得发送的脉冲数,有下面4种手段 1)每发送一个脉冲,做一次中断计数 2)根据发送的频率×发送的时间,获得脉冲数量,对于变速的脉冲,可以累计积分的方法来获得总脉冲 3)一个定时器为主发送脉冲,另外一个定时器为从,对发送的脉冲计数 4)使用DMA方式,例如共发送1000个脉冲,那么定义u16 per[1001],每发送一个脉冲,dma会从数组中更新下一个占空比字,数组最后一个字为0,表示停发脉冲 上面4种方法的用途和特点 1)对于低速率脉冲比较好,可以说低速发脉冲的首选,例如10Khz以下的,否则中断占用太多的cpu,这种方法要注意将中断优先级提高,否则会丢计数, 2)用定时的计时精确高,可以允许有脉冲计数丢失的情况 3)主从方式,需额外的定时器来计数,例如tim1发脉冲 tim2计数,最方便的方式,无论高速低速即可,同时占用cpu最低,只是要占用多一个定时器 4)DMA方式也算是一个很确定的方式,不会丢失脉冲,但是高速的时候,会较多的占用内部总线同时会使用一个多余的DMA控制器,而且有个缺点,就是使用起来比较复杂,没有达到KISS原则 个人推荐方式,低速时中断方式,如果不知高速还是低速,则使用主从方式。具体的方式需要根据资源和需求来确定。 stm32定时器算是比较复杂的器件,而且用户要较多的介入底层,希望将来st公司能够能够简化器件的使用。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值