电压问题STM32程序卡死

使用STM32f103C8T6做小项目的时候,其中有一步需要用定时器输出PWM控制舵机旋转。

  1. 开始时,用ST-Link下载器引出的3.3V电压给舵机通电,此时舵机不动;
  2. 之后换了个电源转换模块,将电压输出调到5V给舵机通电,此时程序运行舵机可以转动,但触发一次转动之后,整个项目的程序就卡死了,重启很多次之后一直如此;
  3. 之后又将电压调低,调到4V给舵机通电,此时舵机可以完成1-3次转动(不稳定),之后依然会卡死整个程序。
  4. 之后又将电压调到3.5V给舵机供电,此时舵机可以正常运行程序了,不会出现卡死整个程序的情况

查了查舵机驱动电压范围,发现没有超过舵机最大电压,可以排除舵机电压问题
所以是不是在驱动舵机的过程中会出现电流倒流的情况呢?、
我用的STM32的引脚是PA0,手册上面此引脚没写可以容忍TF电压,所以是不是有大电压传给了PA0引脚?
STM32有电压保护功能吗?

img

img

以下内容部分参考ChatGPT模型:


首先需要了解舵机的电压范围和电流需求,并确保所使用的电源能够满足舵机的需求。其次需要检查舵机的控制信号是否正确,包括信号的频率、占空比等参数。如果电压范围和控制信号都没有问题,那么可以考虑使用电容和二极管等元器件来解决电流倒流的问题。另外,需要注意使用正确的引脚和电压,以避免损坏芯片。STM32具有一定的电压保护功能,但也需要开发者在设计中注意相关问题。以下是可能会用到的代码块:

// 设置定时器的PWM输出模式
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM2, &TIM_OCInitStructure);

// 控制舵机旋转
TIM_SetCompare1(TIM2, 1000); // 设置占空比为50%
// 使用电容和二极管来解决电流倒流问题
// 电容的参数需要根据具体情况进行选择
// 二极管的选择需要注意正反极性以及额定电流和电压
// 在舵机电源正极和电源模块之间串联电容和二极管

如果我的建议对您有帮助、请点击采纳、祝您生活愉快