我有10个伺服电机,我想从它们中推导出所有这些。我使用了2个定时器中断,并使用不同的定时器频率为每个引脚产生不同的PWM频率。连接到伺服销,我导出的一个伺服与每个销, .the码是这样的:
被修改:
用2个定时器产生无限pwm与stm32
void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
GPIO_ResetBits(SERVO_PORT , FUEL_PIN);
GPIO_ResetBits(SERVO_PORT , SPEED_PIN);
GPIO_ResetBits(SERVO_PORT , RPM_PIN);
GPIO_ResetBits(SERVO_PORT , AIR_PRESURE_PIN);
GPIO_ResetBits(SERVO_PORT , OIL_ENGINE_PRESURE_PIN);
GPIO_ResetBits(SERVO_PORT , OIL_GEARBOX_PRESURE_PIN);
GPIO_ResetBits(SERVO_PORT , OIL_TEMPERATURE_PIN);
GPIO_ResetBits(SERVO_PORT , COOLER_WATER_TEMPERATURE_PIN);
//GPIO_ResetBits(GPIOD,GPIO_Pin_3);
CurrentDegree = 0;
}
}
void TIM4_IRQHandler(void)
{
if (TIM_GetITStatus(TIM4 , TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM4 , TIM_FLAG_Update);
CurrentDegree++;
if(CurrentDegree < Desired)
{
GPIO_SetBits(GPIOD , GPIO_Pin_3);
}
else
{
GPIO_ResetBits(GPIOD,GPIO_Pin_3);
}
if(CurrentDegree < GetSpeed())
{
GPIO_SetBits(SERVO_PORT , SPEED_PIN);
}
else
{
GPIO_ResetBits(SERVO_PORT , SPEED_PIN);
}
if(CurrentDegree < GetRpm())
{
GPIO_SetBits(SERVO_PORT , RPM_PIN);
}
else
{
GPIO_ResetBits(SERVO_PORT , RPM_PIN);
}
if(CurrentDegree < GetFuel())
{
GPIO_SetBits(SERVO_PORT , FUEL_PIN);
}
else
{
GPIO_ResetBits(SERVO_PORT , FUEL_PIN);
}
if(CurrentDegree < GetAirPresure())
{
GPIO_SetBits(SERVO_PORT , AIR_PRESURE_PIN);
}
else
{
GPIO_ResetBits(SERVO_PORT , AIR_PRESURE_PIN);
}
if(CurrentDegree < GetOilEnginePresure())
{
GPIO_SetBits(SERVO_PORT , OIL_ENGINE_PRESURE_PIN);
}
else
{
GPIO_ResetBits(SERVO_PORT , OIL_ENGINE_PRESURE_PIN);
}
if(CurrentDegree < GetOilGearboxPresure())
{
GPIO_SetBits(SERVO_PORT , OIL_GEARBOX_PRESURE_PIN);
}
else
{
GPIO_ResetBits(SERVO_PORT , OIL_GEARBOX_PRESURE_PIN);
}
if(CurrentDegree < GetOilTemperature())
{
GPIO_SetBits(SERVO_PORT , OIL_TEMPERATURE_PIN);
}
else
{
GPIO_ResetBits(SERVO_PORT , OIL_TEMPERATURE_PIN);
}
if(CurrentDegree < GetCoolerWaterTemperature())
{
GPIO_SetBits(SERVO_PORT , COOLER_WATER_TEMPERATURE_PIN);
}
else
{
GPIO_ResetBits(SERVO_PORT , COOLER_WATER_TEMPERATURE_PIN);
}
}
}
所生成的PWM工作正常的5个引脚在端口A,但是当我增加了端口的数量,stm32挂起。 我怎样才能增加引脚?
更多详细信息添加@berendi – Hamid