Контроллер прерываний: различия между версиями
Материал из me-robotics wiki
Sh-sergey (обсуждение | вклад) (init) |
Sh-sergey (обсуждение | вклад) Метка: визуальный редактор отключён |
||
Строка 16: | Строка 16: | ||
https://disk.yandex.ru/d/tpft5MKx1UggXA | https://disk.yandex.ru/d/tpft5MKx1UggXA | ||
+ | |||
+ | <syntaxhighlight lang="python" line> | ||
+ | |||
+ | def quick_sort(arr): | ||
+ | less = [] | ||
+ | pivot_list = [] | ||
+ | more = [] | ||
+ | if len(arr) <= 1: | ||
+ | return arr | ||
+ | else: | ||
+ | pass | ||
+ | |||
+ | </syntaxhighlight> |
Версия 16:02, 17 марта 2022
Данная статья рассматривает настройку контроллера прерываний. Ниже даны основные моменты, на которые следует обратить внимание, далее дан пример с обработкой прерывания от 32-х разрядного таймера.
Важный момент
Контроллер прерываний не является векторным, при возникновении прерывания из любого источника он всегда вызовет один обработчик.
Обратите внимание
Для работы контроллера прерываний требуется следующее:
- Включить тактирование EPIC на шине APB_M (в блоке Power Manager);
- Разрешить прерывания по необходимым линиям в блоке EPIC (контроллер прерываний);
- Разрешить аппаратные прерывания (установить соответствующие регистры состояния в ядре).
В периферийных блоках также требуется разрешить прерывания по определенным событиям.
Пример обработки прерывания:
https://disk.yandex.ru/d/tpft5MKx1UggXA
def quick_sort(arr):
less = []
pivot_list = []
more = []
if len(arr) <= 1:
return arr
else:
pass