Блок прерываний EXTI: различия между версиями
Строка 1: | Строка 1: | ||
=== Введение === | === Введение === | ||
Обработка прерываний выводов реализована в отдельном модуле. Входные линии трех блоков ввода-вывода подключаются к 8 мультиплексорам формируя 8 линий, для которых формируются прерывания. Каждый мультиплексор управляется независимо, на основе соответствующих бит поля IRQ_LINE_MUX. Схема коммутации представлена в таблице. | Обработка прерываний выводов реализована в отдельном модуле. Входные линии трех блоков ввода-вывода подключаются к 8 мультиплексорам формируя 8 выходных линий, для которых формируются прерывания. | ||
<<Здесь картинка с "мультиплексором">> | |||
Каждый мультиплексор управляется независимо, на основе соответствующих бит поля IRQ_LINE_MUX. Схема коммутации представлена в таблице. | |||
Разрешение и запрещение срабатывания прерываний производится через запись в регистры EXTI_INTR_ENABLE_SET и EXTI_INTR_ENABLE_CLEAR. | |||
Срабатывание прерывания можно становить по уровню - 1 или 0, а так же по фронтам на входах - спадающий или нарастающий или и тот и другой. | |||
После срабатывания прерывания в обработчике его следует сбросить записью в регистр EXTI_INTR_CLEAR. | |||
=== Описание модуля === | === Описание модуля === | ||
Строка 972: | Строка 982: | ||
Биты 31:8 Зарезервировано | Биты 31:8 Зарезервировано | ||
Биты 7:0 ICLR'''y''' - Биты отвечают за | Биты 7:0 ICLR'''y''' - Биты отвечают за сброс сработавшего прерывания. | ||
Регистр сброса флагов прерываний по событию. | Регистр сброса флагов прерываний по событию. | ||
Запись «1» – очищает флаг прерывания соответствующего вывода | Запись «1» – очищает флаг прерывания соответствующего вывода |
Версия от 19:06, 11 апреля 2023
Введение
Обработка прерываний выводов реализована в отдельном модуле. Входные линии трех блоков ввода-вывода подключаются к 8 мультиплексорам формируя 8 выходных линий, для которых формируются прерывания.
<<Здесь картинка с "мультиплексором">>
Каждый мультиплексор управляется независимо, на основе соответствующих бит поля IRQ_LINE_MUX. Схема коммутации представлена в таблице.
Разрешение и запрещение срабатывания прерываний производится через запись в регистры EXTI_INTR_ENABLE_SET и EXTI_INTR_ENABLE_CLEAR.
Срабатывание прерывания можно становить по уровню - 1 или 0, а так же по фронтам на входах - спадающий или нарастающий или и тот и другой.
После срабатывания прерывания в обработчике его следует сбросить записью в регистр EXTI_INTR_CLEAR.
Описание модуля
Мультиплексор линий прерываний
Прерывание | Линия_0
Mux[3:0] |
Линия_1
Mux[7:4] |
Линия_2
Mux[11:8] |
Линия_3
Mux[15:12] |
Линия_4
Mux[19:16] |
Линия_5
Mux[23:20] |
Линия_6
Mux[27:24] |
Линия_7
Mux[31:28] |
---|---|---|---|---|---|---|---|---|
MUX [i]=0 | GPIO_0.0 | GPIO_0.1 | GPIO_0.2 | GPIO_0.3 | GPIO_0.4 | GPIO_0.5 | GPIO_0.6 | GPIO_0.7 |
MUX [i]=1 | GPIO_0.8 | GPIO_0.9 | GPIO_0.10 | GPIO_0.11 | GPIO_0.12 | GPIO_0.13 | GPIO_0.14 | GPIO_0.15 |
MUX [i]=2 | GPIO_1.0 | GPIO_1.1 | GPIO_1.2 | GPIO_1.3 | GPIO_1.4 | GPIO_1.5 | GPIO_1.6 | GPIO_1.7 |
MUX [i]=3 | GPIO_1.8 | GPIO_1.9 | GPIO_1.10 | GPIO_1.11 | GPIO_1.12 | GPIO_1.13 | GPIO_1.14 | GPIO_1.15 |
MUX [i]=4 | GPIO_2.0 | GPIO_2.1 | GPIO_2.2 | GPIO_2.3 | GPIO_2.4 | GPIO_2.5 | GPIO_2.6 | GPIO_2.7 |
MUX [i]=5 | GPIO_0.4 | GPIO_0.5 | GPIO_0.6 | GPIO_0.7 | GPIO_0.0 | GPIO_0.1 | GPIO_0.2 | GPIO_0.3 |
MUX [i]=6 | GPIO_0.12 | GPIO_0.13 | GPIO_0.14 | GPIO_0.15 | GPIO_0.8 | GPIO_0.9 | GPIO_0.10 | GPIO_0.11 |
MUX [i]=7 | GPIO_1.4 | GPIO_1.5 | GPIO_1.6 | GPIO_1.7 | GPIO_1.0 | GPIO_1.1 | GPIO_1.2 | GPIO_1.3 |
MUX [i]=8 | GPIO_1.12 | GPIO_1.13 | GPIO_1.14 | GPIO_1.15 | GPIO_1.8 | GPIO_1.9 | GPIO_1.10 | GPIO_1.11 |
MUX [i]=9 | GPIO_2.4 | GPIO_2.5 | GPIO_2.6 | GPIO_2.7 | GPIO_2.0 | GPIO_2.1 | GPIO_2.2 | GPIO_2.3 |
MUX [i]=10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Описание регистров
Регистр EXTI_SATE
Смещение: 0x00, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
S7 | S6 | S5 | S4 | S3 | S2 | S1 | S0 |
ro | ro | ro | ro | ro | ro | ro | ro |
Биты 31:8 Зарезервировано
Биты 7:0 Sy - Биты отвечают за текущее состояние выводов линий после мультиплексоров. Только чтение.
Нужно дать описание - что значит 1 и что значит 0.
Регистр EXTI_IRQ_LINE_MUX
Смещение: 0x04, Значение после подачи сброса: 0x00000000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
Mux_7 | Mux_6 | Mux_5 | Mux_4 | ||||||||||||
rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Mux_3 | Mux_2 | Mux_1 | Mux_0 | ||||||||||||
rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Биты 2y:2y+3 Mux_y[0:3]: Управление мультиплексорами.
При записи меняет выбор мультиплексора на заданный
При чтении - выдает заданный ранее выбор мультиплексора
Регистр EXTI_INTERRUPT
Смещение: 0x08, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
I7 | I6 | I5 | I4 | I3 | I2 | I1 | I0 |
rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:8 Зарезервировано
Биты 7:0 Iy - Биты отвечают за текущее состояние прерываний.
Нужно дать описание - что значит 1 и что значит 0.
При чтении выдают состояние
При записи - меняют состояние
Регистр EXTI_INTR_ENABLE_SET
Смещение: 0x0С, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
IE7 | IE6 | IE5 | IE4 | IE3 | IE2 | IE1 | IE0 |
rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:8 Зарезервировано
Биты 7:0 IEy - Биты отвечают за текущее состояние разрешения прерываний.
Регистр разрешения прерываний.
При чтении – текущее состояние разрешений прерываний.
При записи «1» разрешает прерывание от соответствующего вывода
Регистр EXTI_INTR_ENABLE_CLEAR
Смещение: 0x10, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
IE7 | IE6 | IE5 | IE4 | IE3 | IE2 | IE1 | IE0 |
rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:8 Зарезервировано
Биты 7:0 IEy - Биты отвечают за текущее состояние разрешения прерываний.
Регистр запрета прерываний.
При чтении – текущее состояние разрешений прерываний.
При записи «1» запрещает прерывание от соответствующего вывода
Регистр EXTI_INTR_EDGE
Смещение: 0x14, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ED7 | ED6 | ED5 | ED4 | ED3 | ED2 | ED1 | ED0 |
rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:8 Зарезервировано
Биты 7:0 EDy - Биты отвечают за текущую конфигурацию срабатывания прерываний.
Регистр типа прерываний.
При чтении – текущий тип прерывания: «1» – по событию (фронт или спад), «0» – по уровню.
Запись «1» – прерывание формируется по событию для соответствующего вывода
Регистр EXTI_INTR_LEVEL
Смещение: 0x18, Значение после подачи сброса: 0x000000FF;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
LV7 | LV6 | LV5 | LV4 | LV3 | LV2 | LV1 | LV0 |
rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:8 Зарезервировано
Биты 7:0 LVy - Биты отвечают за текущую конфигурацию срабатывания прерываний.
Регистр типа прерываний.
При чтении – текущий тип прерывания (инвертированный): «0» – по событию; «1» – по уровню.
Запись «1» – прерывание формируется по уровню для соответствующего вывода
Регистр EXTI_INTR_LEVEL_SET
Смещение: 0x1C, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
LVS7 | LVS6 | LVS5 | LVS4 | LVS3 | LVS2 | LVS1 | LVS0 |
rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:8 Зарезервировано
Биты 7:0 LVCy - Биты отвечают за текущую конфигурацию срабатывания прерываний.
Регистр выбора уровня / события прерываний.
При чтении:
- «0» – прерывания формируются по спаду или уровню логического «0»;
- «1» – прерывания формируются по нарастающему фронту или уровню логической «1»
Запись «1» – прерывание формируется по нарастающему фронту или уровню логической «1» для соответствующего вывода
Регистр EXTI_INTR_LEVEL_CLEAR
Смещение: 0x20, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
LVC7 | LVC6 | LVC5 | LVC4 | LVC3 | LVC2 | LVC1 | LVC0 |
rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:8 Зарезервировано
Биты 7:0 LVCy - Биты отвечают за текущую конфигурацию срабатывания прерываний.
Регистр уровня / события прерываний.
При чтении:
- «0» – прерывания формируются по спаду или уровню логического «0»;
- «1» – прерывания формируются по нарастающему фронту или уровню логической «1»
Запись «1»– прерывание формируется по спаду или уровню логического «0» для соответствующего вывода
Регистр EXTI_ANY_INTR_EDGE_SET
Смещение: 0x24, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
AEDS7 | AEDS6 | AEDS5 | AEDS4 | AEDS3 | AEDS2 | AEDS1 | AEDS0 |
rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:8 Зарезервировано
Биты 7:0 AEDSy - Биты отвечают за текущую конфигурацию срабатывания прерываний.
Регистр установки срабатывания прерываний по любому событию.
При чтении:
- «0» – прерывания не формируются и по спаду и по фронту;
- «1» – прерывания формируются и по спаду и по фронту;
Запись «1» – прерывание формируется по любому изменению соответствующего вывода
Регистр EXTI_INTR_ANY_EDGE_CLEAR
Смещение: 0x28, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
AEDC7 | AEDC6 | AEDC5 | AEDC4 | AEDC3 | AEDC2 | AEDC1 | AEDC0 |
rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:8 Зарезервировано
Биты 7:0 AEDCy - Биты отвечают за текущую конфигурацию срабатывания прерываний.
Регистр снятия срабатывания прерываний по любому событию.
При чтении:
- «0» – прерывания не формируются и по спаду и по фронту;
- «1» – прерывания формируются и по спаду и по фронту;
Запись «1» – прерывание перестает формироваться по любому изменению соответствующего вывода
Регистр EXTI_INTR_CLEAR
Смещение: 0x28, Значение после подачи сброса: 0x0000;
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ICLR7 | ICLR6 | ICLR5 | ICLR4 | ICLR3 | ICLR2 | ICLR1 | ICLR0 |
w | w | w | w | w | w | w | w |
Биты 31:8 Зарезервировано
Биты 7:0 ICLRy - Биты отвечают за сброс сработавшего прерывания.
Регистр сброса флагов прерываний по событию.
Запись «1» – очищает флаг прерывания соответствующего вывода