Мой девайс STM32F4DISCOVERY программирую под IARом.
Для структуризации разделю свои вопросы на две части по внутренним прерываниям и по внешним.
Логичнее начать с внутренних.
NVIC
Разрешение прерываний. С функцией NVIC_EnableIRQ(IRQ) все понятно, просто запихнуть в ее аргумент нужный обработчик.
Вопрос как разрешить прерывания с использованием регистров. Насколько я понял для разрешения прерываний используется регистр ISER, более того он разбит на три элемента. Вот тут и возникает вопрос Как используя тот или иной элемент разрешить прерывания по нужной мне периферии? Например USART
Приоритеты и группы приоритетов прерываний Вот здесь для меня вообще темный лес.
Как с помощью регистров расставлять приоритеты. IPRx как раз отвечает за приоритет. Но их 20 шутк Как определить какой из них отвечает за выставление приоритета у того же USART и какой байт мне нужен?
Что касается подгрупп то дело еще темнее. Вообще читая RM часто вижу обожначение РЕГИСТР[x:y] например: AIRCR[10:8] что в скобках? Как я могу это использовать?
EXTI
Собственно вопросы те же самые. Единственное, что хочу прописать здесь для собственного понимания это то, что для прерываний по состоянию ножки эту самую ножку я должен сконфигурировать как альтернативную функцию. Про софтверный вызов я пока молчу.
Если быть конкретнее, то вот вопросы:
У нас 16 линий EXTI каждому номеру соответствует номер порта, то есть EXTI1 отвечает за ножки номер 1 портов A-E (в моем случае) Но как назначить порт?
Далее непонятно, если у нас 16 линий EXTI0-EXTI15, то что такое EXTI0_IRQn до EXTI4_IRQn и EXTI5_9_IRQn и EXTI10_15IRQn
В примерах кода видел такую запись: AFIO->EXTICR[1] AFIO - очевидно, что-то связанное с Альтернативной функцией. Посмотрел в IAR у меня подобного нет, но есть SYSCFG->EXTICR[1] или эти вещи не связаны? Еще что такое EXTICR[1] (в заголовках вообще объявлен массив из 4-х элементов)?
Ну и собственно непонятен опять же момент с разрешением прерываний с использование регистра IMR. Вот я выбрал ногу микроконтроллера, вот я выбрал порт. Как разрешить именно это прерывание?
Уффф. Пока все. Вопросов много. Не пинайте, я честно сидел и разбирался в примерами и читал RM. Отсюда и возникли вопросы.



