首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STM32F051 -取决于过流输入的不同空闲状态

STM32F051 -取决于过流输入的不同空闲状态
EN

Stack Overflow用户
提问于 2020-10-15 14:51:08
回答 1查看 73关注 0票数 0

我有一个STM32F051驱动一个H桥(适当的门驱动器和过流脉冲发送回微控制器),使用TIM1和互补信号(和死区时间产生)为变压器供电。

我试图配置不同的“安全”状态,具体取决于所接收的过流脉冲:

  • 在高侧过流,关闭低侧挡板,打开高侧挡板。
  • 在低侧过流,关闭高侧挡板,打开低侧挡板。

其思想是提高逆变器的过流性能。

是否有可能在接收到GPIO上的脉冲时,手动将定时器的输出设置为定义状态?我试过使用safe函数,但您只能设置一个预定义的“安全”状态。对于我的应用程序,我需要两个(目前,更多)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-28 09:55:55

最后,我发现了结果,并与你分享。

源代码示例 of libopencm3帮助我找到了答案。

代码语言:javascript
复制
#define TIM_CCMR1_OC1M_INACTIVE     (0x2 << 4)
#define TIM_CCMR1_OC1M_FORCE_LOW    (0x4 << 4)
#define TIM_CCMR1_OC1M_FORCE_HIGH   (0x5 << 4)
#define TIM_CCMR1_OC1M_PWM2         (0x7 << 4)

#define TIM_CCMR1_OC2M_INACTIVE     (0x2 << 12)
#define TIM_CCMR1_OC2M_FORCE_LOW    (0x4 << 12)
#define TIM_CCMR1_OC2M_FORCE_HIGH   (0x5 << 12)
#define TIM_CCMR1_OC2M_PWM2         (0x7 << 12)

用于禁用和启用输出的实用程序函数。

代码语言:javascript
复制
void disable_pwm(){
    TIM1->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1NE | TIM_CCER_CC2E | TIM_CCER_CC2NE);
}

void enable_pwm(){
    TIM1->CCER |= (TIM_CCER_CC1E | TIM_CCER_CC1NE | TIM_CCER_CC2E | TIM_CCER_CC2NE);
}

这里是如何强迫H桥缩短荷载到地面作为一个例子。

代码语言:javascript
复制
TIM1->CCMR1 &= ~TIM_CCMR1_OC1M_Msk;
TIM1->CCMR1 |= TIM_CCMR1_OC1M_FORCE_LOW;

TIM1->CCMR1 &= ~TIM_CCMR1_OC2M_Msk;
TIM1->CCMR1 |= TIM_CCMR1_OC2M_FORCE_LOW;

希望这会对其他人有用!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64374256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档