Контроллер прерываний: различия между версиями

Материал из me-robotics wiki
(init)
 
Строка 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

‎