PWM模式

        主要记录学习过程中比较疑惑的部分,其他理论部分可参考stm32f10x官方手册。

         PWM(脉冲宽度调制)可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空 比的信号。

        在TIMx_CCMRx寄存器中的OCxM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。

        OCx的极性可以通过软件在TIMx_CCER寄存器中的CCxP位设置,它可以设置为高电平有效或低电平有效。TIMx_CCER寄存器中的CCxE位控制OCx输出使能。

        在学习过程中主要对PWM模式1和PWM模式2比较模糊。下面主要通过寄存器操作和具体的例子进行解释。(以OC1输出通道为例)

         

           CCMR1寄存器的位6:4可以选择输出比较模式,为110和111时,分别选择PWM模式1和2,图中有详细介绍。位3是对捕获/比较寄存器预装载使能。

        至于上文提到的ARPE标志位,则是代表自动重装载值是否在下一个更新事件发生后装载。

 

 

        PWM模式1和模式2中都是通过比较CNT和CCR1寄存器,来决定有效电平,这里的有效电平不确定是高电平还是低电平。那么如何确实电平状态呢?通过CCER寄存器的位1标志位来进行确定(OC1),0高电平有效,1低电平有效,这样就可以对应PWM模式来判断输出脉冲了

        例如:PWM1模式下,CNT<CCR1时是有效电平,在CCER寄存器位1写入’1‘,那么OC1通道产生的脉冲首先是低电平,然后是高电平;反之,若在CCER寄存器位1写入'0',那么OC1通道产生的脉冲首先是高电平,然后是低电平。 

//进行PWM输出实验 控制LED由暗到亮再到暗,循环。
//其中对PWM模式和OCx极性的配置
//初始化输出OC2--通道2
    IM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM2;
    IM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;
    IM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
    TIM_OC2Init(TIM3,&IM_OCInitStruct);
    //使能预装载寄存器
    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值