Несколько прерываний на одном таймере - STM32F413ZH - PullRequest
0 голосов
/ 22 января 2019

Можно ли управлять несколькими прерываниями в одном таймере (STM32F103)?

Я использую режим захвата таймера 8 (TIM8-канал 2) для расчета скорости вентилятора (вращение вминуты).Вентилятор генерирует квадратный сигнал для каждого вращения, поэтому мне просто нужно получить значение TIM8, чтобы получить период вращения:

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)  {

 if (htim->Instance==TIM8){

 FanSpeedPeriodFan1 = __HAL_TIM_GetCompare(&FAN_SPEED1_TIMx,TIM_CHANNEL_2);//read TIM5 channel 2 capture value

 __HAL_TIM_SetCounter(&FAN_SPEED1_TIMx, 0);    //reset counter
 }
}

Здесь все работает нормально, программное обеспечение падает вОбратный звонок каждые два восходящих фронта.Теперь я хочу определить, когда вентилятор заблокирован, поэтому на выводе нет прямоугольных сигналов.Для этого я хочу использовать событие обновления таймера.Если таймер достигает максимального значения и перезапускается с 0, я хочу установить прерывание или событие.

Я знаю, что такое поведение возможно, оно записано в RM: RM

Я пытался установить несколько регистров (например, TIM8_EGR, бит UG), но безрезультатный результатна данный момент прерывание не происходит, когда таймер достигает своего максимального значения.

Если кто-то может мне помочь, я был бы очень признателен.

...