STMCU小助手
发布时间:2022-5-2 09:04
|
在PWM模式2中,CNT<CCR时输出无效电平,CNT>CCR时输出有效电平。; `4 I! o9 ~2 z+ t4 k ) _% X+ q" T- T# h5 V! [3 K PWM的有效输出电平在TIMx_CCER寄存器设置。 0 ] [5 q1 o! W
TIMx_CCER.1为0,OC1高电平有效;TIMx_CCER.1为1,OC1低电平有效。其他通道同理。 4 c6 R, o' b/ G! A& O- ^+ @ 在PWM初始化函数中,通过TIM_OCInitStructure.TIM_OCPolarity设置输出极性,
如下代码摘自库函数TIM_OC2Init,说明在PWM初始化过程中确实是通过配置CCER寄存器对应位设置PWM的输出极性。
下面通过示波器实验PWM的输出极性控制,4 |( ~1 G' z9 M: }. n) _0 t+ ~ 4 O. |, r1 i6 ]) b/ r
如上代码设置,初始化TIM_OC2Init后,PWM输出即刻接到对应引脚PA7,此时CCR2寄存器内的值64与定时器计数值比较,因为我们没有打开定时器,所以此时CNT寄存器为0,有CNT < CCR2,在PWM Mode2下,输出无效电平,如上代码设置有效电平为低电平(即无效电平为高电平),因此此时应该输出高电平,5 G( R! R/ C% k
& M6 y; d7 z# d- l# ` 修改上述代码,将有效电平修改为高电平, 5 @3 d1 V, T+ G6 b. f TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;: V" K" e6 W) W# f% [5 R% Y' U 此时示波器的输出如下,! F8 Y- V6 |7 `
3 {2 p8 U2 E5 }2 P6 y4 \" D$ I- L / a% j- t+ J0 _3 o2 j8 L * X. F( S. R0 K! }: }. \: j 5 L: q; S% a+ }8 G! c7 ]4 t |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版