Контроллер прерываний: различия между версиями
Материал из 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