USART1 – přerušení/interrupt STM32L100

Další mini pokračování z předchozího článku o programování USARTu pro STM32L100 a jemu podobné typy (STM32F0, STM32F3, STM32F4…)

USART – STM32L100

V tomto článku se znova podíváme na USART, tentokrát ale s přerušením. Budeme řešit jenom jeden, trochu větší problém a to zápis přerušení do NVIC (Nested vectored interrupt controller) a ISER (Interrupt Set Enable Register). Článek opět vychází ze stránek http://joudove.8u.cz/.

Zde přibyl pouze kousek kódu a to povolení přerušení od přijmu (receive).

Poté ještě povolíme přerušení v řadiči přerušení.

Tuto část vysvětlím. Každé přerušení má své číslo, toto číslo se musí zapsat do registru NVIC resp. ISER.

USART1 má číslo 37. To se nám ovšem do 32 bit registru nevejde. Proto je ISER rozdělen na ISER[0] a ISER[1]. V ISER[0] jsou přerušení od 0 do 31 a v ISER[1] od 32 do 56. Část seznamu přerušení vidíte níže.

Kompletní seznam najdete v stm32l1xx.h.

A zpět k předešlému zápisu. Ten upravený vychází ze zápisu:

Pro zakázaní přerušení je použit zápis:

Předchozí část kódu byl zkrácený zápis tohoto. Jinak ho můžete také zapsat takto:

Což ve zkratce znamená, že s hodnotou USART1_IRQn = 37 provedeme bitový součin (&) s hodnotou 0x1F (31) což ve výsledku dá hodnotu 5. Po bitovém posunu o 5 se povolí přerušení od USART1.

Na závěr přikládám zdrojové kódy:

MAIN.C

Do STM32L1xx_it.c někam přidáme obsluhu přerušení:

Sdílejte článek:

Související články

Pokud programujete mikrokontroléry od firmy STM (STM32F4, STM32F0, STM32L1) pomocí Standard Pheripheral Library, tak se vám možná nelíbí velikost výsledného kódu.

Takže tu máme druhý program, opět blikání LEDkou, ale tentokrát pomocí přerušení od časovače SysTick.