#stm32
Вопрос:
Мой вопрос заключается в использовании ШИМ stm32 для привода шагового двигателя, я хочу настроить параметр TIM2-gt;ARR=arr1 для регулировки скорости шага, но если я установлю этот параметр, он не будет работать в режиме прерывания.
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { if (htim-gt;Instance == TIM2) { //判断电机1步数中断 if (motor1_pwm_count lt; Global_RunStep) //Motor1_Step是全局变量 { if(accelerate_len gt; 0) { int result = PowerTLine[accelerate_len]; //PowerTLine数组为Float浮点型,用int 整形一下传入arr不会卡死 // TIM2-gt;ARR=result; // TIM2-gt;CCR1=result / 2; accelerate_len--; printf("n acc is : %d rn",result); } motor1_pwm_count ; // 步进电机行走步数 } else { HAL_TIM_PWM_Stop_IT(amp;htim2, TIM_CHANNEL_1); motor1_pwm_count = 0; accelerate_len = 200; // end_accelerate_len = 0; Global_RunStep= 0 ; //步进电机ENV 使能设置 关闭 // MOTOR_ENV_LOW; } } }
Комментарии:
1. Пожалуйста, подробно опишите свою проблему. Что вы подразумеваете под «это не работает» ? Тебя больше не прерывают ? И вы получаете его, когда не устанавливаете регистр ARR ?
2. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.