stm32每周学习报告3.0

本文介绍了如何使用STM32的高级定时器TIM1的CH1通道产生PWM输出,详细讲解了配置PWM所需的寄存器,包括捕获/比较模式寄存器、捕获/比较使能寄存器、捕获/比较寄存器和刹车及死区寄存器,并提供了完整的配置步骤,最终实现通过TIM1_CH1控制LED亮度的实验效果。
摘要由CSDN通过智能技术生成

PWM实验

PWM简介

脉冲宽度调制(PWM),是利用微处理器的数字输出来对模拟电路 进行控制的 一种非常有效的技术,即就是对脉冲宽度的控制。

STM32的定时器除了TIM6和7,其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时 产生多达7路的PWM输出。而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出。这个实验我们仅使用TIM1的CH1产生一路PWM输出。

要使用STM32的高级定时器TIMI产生PWM输出,我们会用到4个寄存器来控制PWM的输出。这四个寄存器分别是:捕获/比较模式寄存器、捕获/比较使能寄存器、捕获/比较寄存器以及刹车和死区寄存器。

捕获/比较模式寄存器,该寄存器总共有2个,TIMxCCMR1和TIMx_CCMR1 控制CH1和2,而TIMx_CCMR2控制CH3和CH4。该寄存器的各位描述

该寄存器的有些位在不同的模式下,功能不一样,把寄存器分了2层,上面一层对应输出时的设置而下面的则对应输入时的设置。

这里需要说明的是模式设置位OCxM,此部分由3位组成。总共可以配置成7个模式,我们使用的是PWM模式,这3位必须设置为110/111。这两种PWM模式的区别就是输出电平的极性相反。另外CCxs用于设置通道的方向(输入/输出)默认设置为0,就是设置通道作为输出使用。

捕获/比较使能寄存器(TIMx_CCER)该寄存器控制着各个输入输出通道的开关。
在这里插入图片描述
TIMx_ CCER 寄存器各位描述

该寄存器比较简单,只用到了CC1E位,该位是输入/捕获1输出使能位,要想PWM从IO输出,这个位必须设置为1,所以我们需要设置该位为1.

捕获/比较寄存器(TIMx_CCR1-4),该寄存器总共有4个,对应4个茶孙虎通道CH1-4。因为这4个寄存器都差不多,我们仅以TIMx_CCR1为例介绍,该寄存器的各位描述如图所示:

在这里插入图片描述

在输出模式下,该寄存器的值与 CNT 的值比较,根据比较结果产生相应动作。利用这点,
我们通过修改这个寄存器的值,就可以控制 PWM 的输出脉宽了。本章,我们使用的是 TIM1
的通道 1,所以我们需要修改 TIM1_CCR1 以实现脉宽控制 DS0 的亮度。
如果是通用定时器,则配置以上三个寄存器就够了,但是如果是高级定时器,则还需要配
置:刹车和死区寄存器(TIMx_BDTR),该寄存器各位描述如图所示:

寄存器 TIMx_ BDTR 各位描述

该寄存器,我们只需要关注最高位:MOE 位,要想高级定时器的 PWM 正常输出,则必须设置 MOE 位为 1,否则不会有输出。

本实验要实现通过 TIM1_CH1 输出
PWM 来控制 DS0 的亮度。下面我们介绍配置步骤:
1)开启 TIM1 时钟,配置 PA8 为复用输出。
要使用 TIM1,我们必须先开启 TIM1 的时钟(通过 APB2ENR 设置),这点相信大家看了这么多代码,应该明白了。这里我们还要配置 PA8 为复用输出(当然还要时能 PORTA 的时钟),这是因为 TIM1_CH1 通道将使用 PA8 的复用功能作为输出。
2)设置 TIM3 的 ARR 和 PSC。
在开启了 TIM1 的时钟之后,我们要设置 ARR 和 PSC 两个寄存器的值来控制输出 PWM 的周期。当 PWM 周期太慢(低于 50Hz)的时候,我们就会明显感觉到闪烁了。因此,PWM 周期在这里不宜设置的太小。
3)设置 TIM1_CH1 的 PWM 模式及通道方向。
接下来,我们要设置 TIM1_CH1 为 PWM 模式(默认是冻结的&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值