12.PWM—基于CT117E开发板的STM32库函数编程

本文详细介绍了如何使用STM32库函数在CT117E开发板上实现PWM信号的生成。通过C语言编程,深入探讨了STM32库函数在配置定时器、设置PWM模式以及调制参数等方面的步骤和技巧,为读者提供了一套完整的PWM应用实例。
摘要由CSDN通过智能技术生成
1.PWM 简介
STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。 其中高级定 时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出而通用定时器也能同时产生多达 4 路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出
要使 STM32 的高级定时器 TIM2产生 PWM 输出,除了上一章介绍的几个寄存器(ARR、 PSC、CR1 等)外,我们还会用到 4 个寄存器(通用定时器则只需要 3 个) ,来控制 PWM 的输 出。这四个寄存器分别是:捕获/比较模式寄存器(TIMx_CCMR1/2) 、捕获/比较使能寄存器 (TIMx_CCER) 、捕获/比较寄存器(TIMx_CCR1~4)以及刹车和死区寄存器(TIMx_BDTR) 。
首先是 捕获/比较模式寄存器(TIMx_CCMR1/2),该寄存器总共有 2 个,TIMx _CCMR1 和 TIMx _CCMR2。TIMx_CCMR1 控制 CH1 和 2,而 TIMx_CCMR2 控制 CH3 和 4。该寄存器 的各位描述如图:
于该寄存器的详细说明,请 参考《STM32 参考手册》第 240 页,13.4.7 一节。 设置位 OCxM, 此部分由 3 位组成。总共可以配置成 7 种模式,我们使用的是 PWM 模式,这 3 位必须设置为 110/111。这两种 PWM 模式的区别就是输出电平的极性相反。另外 CCxS 用于设置通道的方向 (输入/输出)默认设置为 0,就是设置通道作为输出使用。
接下来,我们介绍 捕获/比较使能寄存器(TIMx_CCER),该寄存器控制着各个输入输出通 道的开关。该寄存器的各位描述如图:
该寄存器比较简单,我们这里只用到了 CC1E 位,该位是输入/捕获 1 输出使能位,要想 PWM 从 IO 口输出,这个位必须设置为 1,所以我们需要设置该位为 1。该寄存器更详细的介 绍了,请参考《STM32 参考手册》第 244 页,13.4.9 这一节。
最后,我们介绍一下 捕获/比较寄存器(TIMx_CCR1~4),该寄存器总共有 4 个,对应 4 个 输通道 CH1~4。因为这 4 个寄存器都差不多,我们仅以 TIMx_CCR1 为例介绍,该寄存器的各 位描述如图 :
在输出模式下,该寄存器的值与 CNT 的值比较,根据比较结果产生相应动作。利用这点 我们通过修改这个寄存器的值,就可以控制 PWM 的输出脉宽了。 我们使用的是 TIM2 的通道2和3,所以我们需要修改 TIM2_CCR2和 TIM2_CCR3  以实现脉宽控制。
如果是通用定时器,则配置以上三个寄存器就够了,但是如果是 高级定时器,则还需要配 置:刹车和死区寄存器(TIMx_BDTR),该寄存器各位描述如图 :
该寄存器,我们只需要关注最高位:MOE 位,要想 高级定时器的 PWM 正常输出,则必须 设置 MOE 位为 1,否则不会有输出。注意:通用定时器不需要配置这个。其他位我们这里就不 详细介绍了,请参考《STM32 参考手册》第 248 页,13.4.18 这一节。
2.配置步骤
1 ) 开启 TIM2 时钟,配置 PA1、2为复用输出。
要使用 TIM2, 我们必须先开启 TIM2的时钟, 这里我们还要配置 PA1、2 为复用输出(当然还要时能 PORTA 的时钟) ,这是因为 TIM2_CH2 通 道将使用 PA1的复用功能作为输出。库函数使能 TIM2 时钟的方法是:
   
   
   
  1. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值