STM32中关于高电平有效,低电平有效的一点理解

     在学习STM32中的过程中,经常会遇到“高电平有效”,“低电平有效”等字眼,初看时很多时候就会从字面上理解,认为高电平有效的意思就是有效电平是高电平,低电平有效的意思就是有效电平是低电平的意思。而实际上,这样的理解是有误的。下面咱们以STM32的定时器中输出比较通道为例:

这幅图实际上就是一个pwm波产生的过程,对定时器不了解的可以去查阅相关手册,现在我们先看图中标号1的输出模式控制器,这里模式是指pwm模式,他的意思就是可以通过配置寄存器TIMx_CCMR1的OC1M两位,来选择pwm的模式,但是关于模式选择,手册中有这样一句话:在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)

红色字体告诉我们:OCREF为无效电平时为低电平,OCREF为有效电平时就是高电平。

再看标号2: 它的作用是选择输出极性。如果TIMx_CCER的CC1P位为0则高电平有效,否则低电平有效。这个高电平有效是什么意思呢?就是对于选择器来说,高电平有效,如果OCREF为高电平,那么这个选择器的门就会打开,让该信号进入 ,并“激活”该选择器, 之后选择器才会产生信号来激活后面的输出使能电路驱动OC1,让其在OC1上产生有效电平(也就是OC1上产生高电平)。

通过上面的分析机会发现,高电平有效意思是说,若信号为高电平,那么对相应的控制器来说才有效,才能激活该控制器的相关功能。

总结几个关键词:有效电平:高电平

                           无效电平:低电平

                         高电平有效:高电平可以使能相应功能

                         低电平有效:低电平可以使能相应功能


### STM32 PWM 配置低电平的方法 在STM32中,PWM信号的生成依赖于定时器模块。为了设置PWM信号中的低电平部分,主要操作在于调整定时器的自动重装载寄存器(ARR)和捕获/比较寄存器(CCR),这些寄存器决定了PWM周期内的高低电平时间。 对于设定PWM低电平,实际上是在配置PWM占空比时间接完成的。具体来说,在给定的时间周期内,如果希望增加低电平的比例,则需减小高电平时长所对应的数值即减少捕获/比较寄存器值;反之亦然。当捕获/比较寄存器值等于0时,意味着整个周期都处于低电平状态[^1]。 下面是一个简单的例子展示如何初始化并设置一个具有特定低电平比例的PWM输出: ```c #include "stm32f1xx_hal.h" TIM_HandleTypeDef htim3; void MX_TIM3_Init(void) { __HAL_RCC_TIM3_CLK_ENABLE(); // 定义定时器参数结构体 TIM_OC_InitTypeDef sConfigOC; htim3.Instance = TIM3; htim3.Init.Prescaler = 83; // 设置预分频系数, 假设系统频率72MHz则此为1kHz htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 999; // 自动重载值(ARR),代表PWM的一个完整周期长度 HAL_TIM_PWM_Init(&htim3); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; // CCR初始值为0表示全周期都是低电平 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3); } // 调整PWM低电平占比函数 void SetLowLevelRatio(float ratio){ uint16_t compareValue = (uint16_t)(ratio * htim3.Init.Period); __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_3,compareValue); } ``` 上述代码展示了如何创建一个PWM通道,并将其默认全部设置成低电平(`Pulse=0`)。`SetLowLevelRatio()` 函数允许动态修改低电平持续时间和总周期之间的比率,其中传入的 `ratio` 参数范围应在 `[0,1]`之间,例如传递 `0.5` 表示一半时间为低电平,另一半时间为高电平[^4]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值