ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
1031849 Топик полностью
Kceния (28.08.2020 13:34, просмотров: 528) ответил my504 на И как кубовский обработчик помогает в определении источника прерываний по общему вектору? У меня ощущение, что вся эта история со "стандартным" обработчиком - это мазохизм в извращенной форме.
Так он же там не один, а для каждого типа периферии свой. Например: 

HAL_UART_IRQHandler(&huart1); // этот для UART

HAL_DMA_IRQHandler(&hdma1); // этот для DMA

HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_5); // этот для GPIO

HAL_TIM_IRQHandler( &htim4); // этот для таймеров

HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS); // этот для USB

и т.д.

Выражение "стандартный хандлер" не означает существования единого хандлера на все прерывания, а означает хандлер, уже входящий в набор HAL, в параметрах которого указана ссылка на конкретный источник прерывания. Т.е. в общем-то для всех типов прерываний хандлеры уже написаны и установлены по умолчанию. Тогда как программист обычно лишь определяет свой хандлер только для того, чтобы вклиниться вовнутрь стандартного обработчика, для того, чтобы добавить туда что-нибудь свое. Но любителям разбирать флажки ручками ничто не мешает написать отсебятину, не вызывая из своей процедуры стандартного хандлера.