ATNEL tech-forum
https://forum.atnel.pl/

STM32F103 - wywłaszczanie przerwań
https://forum.atnel.pl/topic23738.html
Strona 1 z 1

Autor:  amilo_pa [ 24 kwi 2021, o 22:50 ]
Tytuł:  STM32F103 - wywłaszczanie przerwań

Hej,

Proszę o wyjaśnienie dlaczego tak się dzieje :)

Dla przejrzystości problemu zamieszczam tylko najważniejsze fragmenty kodu.

1. Pierwszy przypadek

Wybieram opcje przerwania: jednen priorytet grupowy i 16 podpriorytetów (0 bits for pre-emption priority, 4 bits for subpriority)

Ustawiam sobie przerwanie zewnętrzne z pinu PA2 wraz z ustawieniem subpriority na 10
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


oraz konfiguruje przerwanie UARTa z subpriority na 0 (w tej samej grupie pre-emption co i przerwanie od PA2, ale przerwanie od UARTA ma większy podpriorytet niż przerwanie od PA2)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I teraz w przerwaniu od PA2 uruchamiam funkcję, która wysyła dane po UARTcie (funkcja wzięta z BB + GB) w której uruchamiane jest przerwanie wysyłające dane -> patrz linijka 15
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i niestety program się "zawiesza" na: while ( tmp_head == UART_TxTail ){} -> linijka 7.


2. Drugi przypadek

Wybieram opcje przerwania: 2 priorytety grupowe i 8 podpriorytetów (1 bits for pre-emption priority, 3 bits for subpriority)

Ustawiam sobie przerwanie zewnętrzne z pinu PA2 wraz z ustawieniem pre-emption = 1 i subpriority = 10
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


oraz konfiguruje UARTa z pre-emption = 0 i subpriority = 0 (więc przerwanie UART ma większy priorytet główny niż przerwanie od PA2)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I w tym przypadku program się nie zawiesza, komunikacja UART działa i przerwania od PA2 są poprawnie obsługiwane

Reasumując
Obrazek

Autor:  fofex [ 25 kwi 2021, o 07:55 ]
Tytuł:  Re: STM32F103 - wywłaszczanie przerwań

Przeczytaj uważniej jak działa "subpriority" a zrozumiesz.

Autor:  amilo_pa [ 25 kwi 2021, o 08:11 ]
Tytuł:  Re: STM32F103 - wywłaszczanie przerwań

Szukałem, czytałem ale nie zrozumiałem dlatego na forum się odezwałem :) nie róbmy z tego forum drugiej elektrody, czyli "Sprawdź w googlach" :)

Autor:  fofex [ 25 kwi 2021, o 08:26 ]
Tytuł:  Re: STM32F103 - wywłaszczanie przerwań

Podrozdział "Preempt Priority and Supbpriority": https://community.arm.com/developer/ip- ... priorities

Autor:  jez2000 [ 25 kwi 2021, o 08:49 ]
Tytuł:  Re: STM32F103 - wywłaszczanie przerwań

Pewnie masz debuger wiec sprawdz dkaczego wiesza sie na tym
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wyglada jakby nie bylo miejsca w buforze

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/