STMCU小助手
发布时间:2022-5-2 09:04
|
在PWM模式2中,CNT<CCR时输出无效电平,CNT>CCR时输出有效电平。$ F& x0 A3 {4 S" ]+ y& m* e : J9 Z6 T2 D# L9 u, c& _ PWM的有效输出电平在TIMx_CCER寄存器设置。7 ~5 t) j- x* {4 P 6 _9 O. x8 M) \( g# d$ S1 U5 t8 t
TIMx_CCER.1为0,OC1高电平有效;TIMx_CCER.1为1,OC1低电平有效。其他通道同理。0 B" _& j# i' I& Y( q$ ^) T, [ 在PWM初始化函数中,通过TIM_OCInitStructure.TIM_OCPolarity设置输出极性,/ o$ s" A9 i. s Q4 m& m
如下代码摘自库函数TIM_OC2Init,说明在PWM初始化过程中确实是通过配置CCER寄存器对应位设置PWM的输出极性。* o) l( b N" L! s3 c
下面通过示波器实验PWM的输出极性控制, 7 j% A; w7 r$ A& |9 Q( b# Y
如上代码设置,初始化TIM_OC2Init后,PWM输出即刻接到对应引脚PA7,此时CCR2寄存器内的值64与定时器计数值比较,因为我们没有打开定时器,所以此时CNT寄存器为0,有CNT < CCR2,在PWM Mode2下,输出无效电平,如上代码设置有效电平为低电平(即无效电平为高电平),因此此时应该输出高电平,
修改上述代码,将有效电平修改为高电平,( y: G- _5 Q* v: ~7 O8 M 0 [6 |- J4 q* K# H, O TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;/ w/ W1 p. Q! \) g* X / V/ E, G# V, h* g 此时示波器的输出如下, ! P, c* J/ o. _' v
3 `! [$ n/ b. D; `6 m 6 i/ g5 m3 l" v9 g( X6 W/ @8 D ' l$ R; H) o8 @3 v, w3 ^2 O |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版