美文网首页
2018-11-28 关于stm32F2XX系列的PWM问题

2018-11-28 关于stm32F2XX系列的PWM问题

作者: weizhongshi | 来源:发表于2018-11-28 16:35 被阅读0次

    其实对于一个电子工程师来讲 PWM应该是很平常的基本知识 这里只是复习一下 因为项目中要用到 所以对于一些细节要再一次的重申一下 这里不讲PWM的原理知识 直接从寄存器和标准库入手。

    首先要注意的是stm32f2 的定时器是在APB上面 下面是时钟树:

    底下是官方文档的几段话:

    由图和这几段话可以看出 定时器是挂在APB1上面 而APB1的最高时速是30Mhz 那么也就是说定时器最大的频率是30Mhz.

    注意 TIMx_ARR 取决了 整个pwm的频率。

    好了 开始看PWM: 首先stm32的PWM有两种模式 PWM1 和PWM2

    PWM1 当TIMX_CCRX<= TIMX_CNT 的时候   OCxREF 为高。

    PWM2 当TIMx_CNT <= TIMX_CCRX的时候  OCxREF 为低 。

    我们来看一下这几个寄存器是作用: 首先是TIMX_CCRX : 这个是捕获或者是比较寄存器 在捕获功能中当捕获计时作用 在PWM中用作比较寄存器 这个数字会被在设置pwm的时候设置,这个寄存器会和TIMx_CNT进行比较 TIMx_CNT寄存器是定时器的计数器 也就说这个计数器会在程序运行的时候自动加减。  OCxREF寄存器是reference 为了区分pwm模式的

    当使用PWM1 的时候: 当向上计数的时候 若 TIMx_CNT <= TIMX_CCRX 输出的通道为有效电平(有效电平可以设置成高电平或者低电平) 如果反之这为无效电平。 在向下计数的时候如果TIMX_CCRX<= TIMX_CNT 则为无效电平 反之则为有效电平。

    PWM2: 模式当向上计数的时候如果 TIMx_CNT<TIMx_CCR1 则为无效电平 反之为有效电平。在向下计数的时候当 TIMx_CNT>TIMx_CCR1的时候为有效电平 反之为无效电平。

    配置过程: 

                    1. 首先配置时钟: 打开相应的PWM所需要的定时器的时钟

                    2. 配置基本定时器(为了配置频率arr的值)

                   3. 配置PWM的变量: TIM_OCMode: 设置pwm的模式 PWM1 或者PWM2

                                                       TIM_OutputState:  是否输出PWM 

                                                       TIM_Pulse: 需要存储的比较值(就是存入到TIMx_CCR1)的值。

                                                     TIM_OCPolarity: 输出的有效极性是什么

                                                    TIM_Output_Compare_Idle_State: 无效的极性是什么。

    一些配置的函数: TIM_OCxInit: 配置通道

                              TIM_SelectOCxM 重新选择通道的输出模式

                             TIM_SetComparex: 比较定时器里面的值和新填装的CCRx里面的值

    相关文章

      网友评论

          本文标题:2018-11-28 关于stm32F2XX系列的PWM问题

          本文链接:https://www.haomeiwen.com/subject/gdtzqqtx.html