我有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