我使用的 MCU 是
STM32F103C8,我需要 2 个 PWM 信号,它们相互完成到 %100 占空比。(即:PWM1=%60 和 PWM2 =%40)。当一个 PWM 通道为高时,另一个需要为低,反之亦然。
重要的是,这两个 PWM 信号不应同时为高电平。所以我想在相反的 PWM 模式下使用 2 个通道。然而,占空比会发生变化,并且它们在整个代码中不会相同,因此在更改这些通道的 CCR 值时,我相信模式可能会被打破并且这些信号可能会同时变高,即使是很短的时间。
有没有一种我可以遵循的方法来维持完成的 PWM 信号而不会同时使它们变高,并且是否有预防措施或安全措施来防止它们同时变高?
编辑:
我需要将死区时间设置为 50 ns 左右,我的时钟周期为 13.8 ns 我需要将
tiM1_BDTR 寄存器的 DTG 位设置为 0x04。(这些是 BDTR 寄存器的 [0-7] 位)。我不想更改 [8-15] 位。但我不确定如何访问和更改 STM32 中的各个位。我想我以前在 PIC 中使用的方法在 STM 中不起作用。
所以我想我可以像这样一点一点地改变每一点:
- TIM1_BDTR= (0<<0);
- TIM1_BDTR= (0<<1);
- TIM1_BDTR= (1<<2);
但这似乎是错误的。如何将 TIM1_BDTR 的最后 LS 3 位设置为 4?