2021-04-23 PWM输出实验(基于定时器)

PWM输出实验

一. 通用定时器PWM概述

二. 常用寄存器和库函数配置

三. 编写PWM输出实验

1.1 STM32 PWM工作过程

STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出。
在这里插入图片描述
在这里插入图片描述
CNT计数器计的值超过CCRx的值时候,输出高电平,低于时输出低电平。周期是由ARR决定的,如果CCRx的值非常小,那么低电平的输出时间就非常短,如果CCRx的值非常大,那么低电平的输出时间就非常长。

有效电平:高电平
无效电平:低电平
高电平有效:高电平可以使能相应功能
低电平有效:低电平可以使能相应功能

以通道1为例:

在这里插入图片描述
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:打开。

设置CCR1(捕获比较(值)寄存器)设置设置比较值,然后通过设置CCMR1: OC1M[2:0]位以及CCER:CC1P位(输入/捕获1输出极性)来设置高低电平的输出模式 即 (先比较然后控制输出。)

1.2 PWM输出模式

寄存器TIMx_CCMR1的OC1M[2:0]位来分析:
在这里插入图片描述
对于模式1:

不管是向上计数还是向下,只要TIMx_CNT<TIMx_CCR1时,就为有效电平。

在这里插入图片描述

1.3 总结

在这里插入图片描述

2.1 PWM寄存器配置

预装载寄存器及自动重装载的预装载寄存器:

void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);

2.2 PWM输出库函数配置

void TIM_OCxInit(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

typedef struct
{
   
  uint16_t TIM_OCMode;  //PWM模式1或者模式2
  uint16_t TIM_Output
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值