Можно ли управлять несколькими прерываниями в одном таймере (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:
Я пытался установить несколько регистров (например, TIM8_EGR, бит UG), но безрезультатный результатна данный момент прерывание не происходит, когда таймер достигает своего максимального значения.
Если кто-то может мне помочь, я был бы очень признателен.