Блок прерываний EXTI: различия между версиями
Строка 772: | Строка 772: | ||
Запись «1»– прерывание формируется по спаду или уровню логического «0» для соответствующего вывода | Запись «1»– прерывание формируется по спаду или уровню логического «0» для соответствующего вывода | ||
===== Регистр EXTI_ANY_INTR_EDGE_SET ===== | |||
Смещение: 0x24, Значение после подачи сброса: 0x0000; | |||
{| class="wikitable" | |||
|31 | |||
|30 | |||
|29 | |||
|28 | |||
|27 | |||
|26 | |||
|25 | |||
|24 | |||
|23 | |||
|22 | |||
|21 | |||
|20 | |||
|19 | |||
|18 | |||
|17 | |||
|16 | |||
|15 | |||
|14 | |||
|13 | |||
|12 | |||
|11 | |||
|10 | |||
|9 | |||
|8 | |||
|- | |||
| colspan="24" |Зарезервировано | |||
|} | |||
{| class="wikitable" | |||
|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 AEDS'''y''' - Биты отвечают за текущую конфигурацию срабатывания прерываний. | |||
Регистр установки срабатывания прерываний по любому событию. | |||
При чтении: | |||
* «0» – прерывания не формируются и по спаду и по фронту; | |||
* «1» – прерывания формируются и по спаду и по фронту; | |||
Запись «1» – прерывание формируется по любому изменению соответствующего вывода | |||
===== Регистр EXTI_INTR_ANY_EDGE_CLEAR ===== | |||
Смещение: 0x28, Значение после подачи сброса: 0x0000; | |||
{| class="wikitable" | |||
|31 | |||
|30 | |||
|29 | |||
|28 | |||
|27 | |||
|26 | |||
|25 | |||
|24 | |||
|23 | |||
|22 | |||
|21 | |||
|20 | |||
|19 | |||
|18 | |||
|17 | |||
|16 | |||
|15 | |||
|14 | |||
|13 | |||
|12 | |||
|11 | |||
|10 | |||
|9 | |||
|8 | |||
|- | |||
| colspan="24" |Зарезервировано | |||
|} | |||
{| class="wikitable" | |||
|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 AEDC'''y''' - Биты отвечают за текущую конфигурацию срабатывания прерываний. | |||
Регистр снятия срабатывания прерываний по любому событию. | |||
При чтении: | |||
* «0» – прерывания не формируются и по спаду и по фронту; | |||
* «1» – прерывания формируются и по спаду и по фронту; | |||
Запись «1» – прерывание перестает формироваться по любому изменению соответствующего вывода | |||
===== Регистр EXTI_INTR_CLEAR ===== | |||
Смещение: 0x28, Значение после подачи сброса: 0x0000; | |||
{| class="wikitable" | |||
|31 | |||
|30 | |||
|29 | |||
|28 | |||
|27 | |||
|26 | |||
|25 | |||
|24 | |||
|23 | |||
|22 | |||
|21 | |||
|20 | |||
|19 | |||
|18 | |||
|17 | |||
|16 | |||
|15 | |||
|14 | |||
|13 | |||
|12 | |||
|11 | |||
|10 | |||
|9 | |||
|8 | |||
|- | |||
| colspan="24" |Зарезервировано | |||
|} | |||
{| class="wikitable" | |||
|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 ICLR'''y''' - Биты отвечают за текущую конфигурацию срабатывания прерываний. | |||
Регистр сброса флагов прерываний по событию. | |||
Запись «1» – очищает флаг прерывания соответствующего вывода |
Версия от 18:57, 11 апреля 2023
Введение
Обработка прерываний выводов реализована в отдельном модуле. Входные линии трех блоков ввода-вывода подключаются к 8 мультиплексорам формируя 8 линий, для которых формируются прерывания. Каждый мультиплексор управляется независимо, на основе соответствующих бит поля IRQ_LINE_MUX. Схема коммутации представлена в таблице.
Описание модуля
Мультиплексор линий прерываний
Прерывание | Линия_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» – очищает флаг прерывания соответствующего вывода