蓝桥杯嵌入式学习STM32之PWM生成

本文介绍了STM32中PWM的生成,包括工作原理、寄存器配置、库函数使用及配置过程。通过实例讲解了如何使用TIM3控制PB5实现PWM,并强调了delay函数在PWM渐变效果中的关键作用。同时,探讨了PWM上下拉设置的观察与理解。
摘要由CSDN通过智能技术生成

有个关于预装载ARPE的问题我一直没弄懂。希望未来的的我能搞明白并且回来完善这篇文章。
不过我也不是什么都没做,我找了一篇挺棒的博客,虽然看的似懂非懂,但是有点感觉了,不过让我表述出来还是不行的。
博客

其实内容很简单,控制计数器从0到ARR(预设置的值),再设置一个用来比较的值CCRx,如果比CCRx小就输出低电平,反之高电平。

从这个例子很轻松就可以看出ARR控制频率(当然是在相同的时钟条件下)
CCRx控制占空比

在这里插入图片描述


工作过程

在这里插入图片描述
CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。
CCMR1: OC1M[2:0]位:
对于PWM方式下,用于设置PWM模式1【110】或者PWM模式2【111】
在这里插入图片描述
CCER:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。
CCER:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。

PWM

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本次用的是TIM3并且映射到PB5上控制LED。
在这里插入图片描述

寄存器

捕获/ 比较模式寄存器(TIMx_CCMR1~2)
捕获/比较使能寄存器(TIMx_CCER)
捕获/比较寄存器(TIMx_CCR1~4)

常用库函数

typedef struct
{
   
  uint16_t TIM_OCMode;  //PWM模式1或者模式2
  uint16_t TIM_OutputState; //输出使能 OR失能
  uint16_t TIM_OutputNState;
  uint16_t TIM_Pulse; //比较值,写CCRx
  uint16_t TIM_OCPolarity; //比较输出极性
  uint16_t TIM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值