Documente Academic
Documente Profesional
Documente Cultură
Laboratorul nr. 3
Întreruperi şi evenimente
NVIC şi interfaţa procesorului de bază sunt strâns cuplate, asta permiţând procesarea
întreruperilor la latenţă scăzută şi eficienţă în procesarea întreruperilor întârziate.
Toate întreruperile ce conţin excepţii de bază sunt gestionate de NVIC. Pentru a afla mai
multe informaţii despre excepţii şi programarea NVIC, consultați manualul de pe pagina
didactică, www.eed.usv.ro/~cristinag .
Întreruperi şi evenimente
(întrerupere sau eveniment) şi evenimentul său declanşator (crescător sau descrescător sau
amândouă). Fiecare linie poate fi de asemenea mascabilă independent. Un registru de aşteptare
menţine linia de stare a cererilor de întreruperi.
Întreruperi şi evenimente
Tabel 1. Tabelul vectorilor pentru STM32F405xx/07xx şi STM32f415xx/17xx (continuarea)
Întreruperi şi evenimente
Tabel 1. Tabelul vectorilor pentru STM32F405xx/07xx şi STM32f415xx/17xx (continuarea)
Întreruperi şi evenimente
Tabel 1. Tabelul vectorilor pentru STM32F405xx/07xx şi STM32f415xx/17xx (continuarea)
Întreruperi şi evenimente
Tabel 2. Tabela cu vectori pentru STM32F42xxx şi STM32F43xx (continuare)
Întreruperi şi evenimente
Tabel 2. Tabela cu vectori pentru STM32F42xxx şi STM32F43xx (continuare)
Întreruperi şi evenimente
Tabel 2. Tabela cu vectori pentru STM32F42xxx şi STM32F43xx (continuare)
Întreruperi şi evenimente
Tabel 2. Tabela cu vectori pentru STM32F42xxx şi STM32F43xx (continuare)
Întreruperi şi evenimente
2.2 Diagrama bloc EXTI
Figura 1 arată diagrama bloc.
Întreruperi şi evenimente
Pentru a folosi o linie externă ca eveniment de trezire, se consultă următorul subcapitol (2.4.
Descrierea funcţională).
Pentru a genera evenimentul, linia de eveniment trebuie să fie configurată şi abilitată. Acest lucru
se face programând cei doi regiştrii de declanşare cu detectarea de margine dorită şi abilitând
cererea de întrerupere scriind ‘1’ la bitul corespundent în registrul mascabil de întrerupere.
Atunci când marginea selectată apare pe linia de întrerupere externă, se generează un puls de
eveniment. Bitul de aşteptare ce corespunde liniei evenimentului nu este setat.
Întreruperi şi evenimente
2.8 Maparea liniilor de întreruperi/evenimente externe
Până la 140 GPIO-uri (STM32F40xx/07xx ŞI STM32F415xx/17xx), 168 GPIO-uri
(STM32F41xxx şi STM32F43xxx) sunt conectate la cele 16 linii de întreruperi/evenimente
externe în acest mod:
Fig. 2 Maparea GPIO a întreruperilor/evenimentelor externe (STM32F405xx/07XX şi
STM32F415xx/17xx)
Întreruperi şi evenimente
Fig. 3 Maparea GPIO a întreruperilor/evenimentelor externe (STM32F42xx şi
STM32F43xxx)
Întreruperi şi evenimente
3 Regiştrii EXTI
A se consulta capitolul 4 pentru a se vedea lista de abrevieri folosite în descrierea regiştrilor.
Întreruperi şi evenimente
Biţii 31:23 Rezervaţi, trebuie păstraţi la valoarea de resetare.
Biţii 22:0 TRx: Bitul de configurare a Rising trigger event al liniei x
0: Rising trigger dezactivat (pentru Event şi Interrupt) pentru linia de input
1: Rising trigger activat (pentru Event şi Interrupt) pentru linia de input.
Notă: Liniile de trezire externe sunt margini de declanşare, nu trebuie să se creeze nici o
problemă tehnică cu aceste linii. Dacă apare o margine crescătoare pe linia de întrerupere
externă în timpul scrierii în registrul EXTI_RTSR, trebuie setat bitul de aşteptare.
Rising şi Falling edge trigger pot fi setate pentru aceeaşi linie de întrerupere. În acest fel,
amândouă generează o condiţie de declanşare.
Notă: Liniile de trezire externe sunt margine de declanşare, nu trebuie să se creeze nici o
problemă tehnică cu aceste linii. Dacă apare o margine descrescătoare pe linia de întrerupere
externă în timpul scrierii în registrul EXTI_FTSR, bitul de aşteptare nu este setat.
Rising şi Falling edge trigger pot fi setate pentru aceeaşi linie de întrerupere. În acest fel,
amândouă generează o condiţie de declanşare.
Întreruperi şi evenimente
Biţii 31:23 Rezervaţi, trebuie păstraţi la valoarea de resetare
Biţii 22:0 SWIERx: Întrerupere software la linia x.
Dacă întreruperea este activată la linia x în registrul EXTI_IMR, scrierea '1' pe
bitul SWIERx când el este setat la '0' va seta bitul corespondent de aşteptare în
registrul EXTI_PR, ducând astfel la generarea unei cereri de întrerupere.
Acest bit este şters eliminând bitul corespundent în registrul EXTI_PR (scriind un
1 pe acel bit).
Întreruperi şi evenimente
3.7 EXTI register map
În Tabelul 4 se poate vedea registrul de mapare EXTI şi valorile de reset.
Întreruperi şi evenimente
4. Lista abrevierilor pentru regiştri
TEMĂ
1. Se vor identifica pinii de port la care sunt conectate tasta de intrerupere şi LED-urile.
2. Se va modifica programul anterior (Blinky) pentru a pune în evidenţă funcţionarea
porturilor I/O utilizând LED-urile şi tasta (se va consulta libraria General purpose input
output (GPIO) și EXTI).
3. Se va modifica programul Blinky sau GPIO pentru a pune în evidenţă funcţionarea
porturilor I/O utilizând LED-urile şi tasta de intrerupere (se va consulta libraria pentru
EXTI)).
4. Se va scrie un program care să aprindă circular câte un LED într-un sens. Dacă se apasă
tasta interrupt button își va schimba direcția de aprindere a LED-urilor în sens opus.
5. După testarea programelor pe simulator se va face testarea reală pe placa de evaluare
STM32F407 Discovery.
Notă
Se vor pune sub tensiune echipamentele numai cu acordul cadrului didactic îndrumător.
Întreruperi şi evenimente