ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
1031769 Топик полностью
my504 (28.08.2020 09:43, просмотров: 414) ответил Kceния на Cтандартный обработчик HALа делает всё, что положено делать с данной периферией, что снимает необходимость делать это самостоятельно. Тогда как собственный обработчик прерывания нужен только затем, чтобы можно было вписать свои дополнительные команды до или после вызова стандартного обработчика.
Кроме проверки и сброса флага "стандартного" в обработчике ничего нет и быть не может. То есть "стандартный" - это ПУСТОЙ обработчик. Но пустой обработчик никому не нужен, значит прямо за его телом должен следовать Ваш код. Вы бы открыли тело "стандартного" и посмотрели что в нем... 

Ваш код:

void TIM6_DAC_IRQHandler(void)

{

.... тут что-то делаю...

HAL_TIM_IRQHandler( &htim6);

}

Не соответствует правилам организации прерываний в СТМ32. В данном обработчике void TIM6_DAC_IRQHandler(void) сначала проверяется флаг, и ТОЛЬКО если он взведен, этот флаг сбрасывается и исполняется пользовательский код. Иначе невозможно разделить разные источники (DAC и TIM6 в данном случае) в одном обработчике. Это значит, что пользовательский код должен быть ВНУТРИ "стандартного".