Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 21 gru 2024, o 08:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 14 wrz 2016, o 16:03 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Witam. Nie wiem czy to odpowiednie forum ale moze ktos z was programuje STMy. Moje pytanie brzmi: gdzie moge znaleźć nazwy wektorów przerwań dla STM32F411RE i jak powiedzieć prockowi ze to własnie tutaj ma byc procedura obsługi przerwania ? Gdyby nie wiadomo było o co chodzi to wytłumacze to w inny sposób. W AVR wpisywałem nazwe wektora dla odpowiedniego przerwania i pisałem procedure obsługi takiego przerwania , np. dla timera 0:
Kod:
ISR(TIMER0_OVF_vect)
{
// jakis kod
}

Pomijam czy to od przepełnienia(jak wyzej) czy porównania itd. W przypadku stm znalazłem tylko table vector w reference manualu, natomiast w internetach wystepuje np.
Kod:
__attribute__((interrupt)) void SysTick_Handler(void){
// jakis kod
}

Skąd to się bierze ? Czy zasada jest taka ze piszemy to magiczne "__attribute__((interrupt))" nastepnie do nazwy konkretnego przerwania z wspomnianej wyzej tablicy wektorów dopisujemy "_Handler" i dodatkowo całośc traktujemy jako funkcje która nic nie zwraca i nic nie przyjmuje ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 wrz 2016, o 17:20 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

Zasada jest w sumie taka sama w większości ( jeśli nie we wszystkich) uC. To co masz w RM ta tablica skoków do wektorów obsługi poszczególnych przerwań. Ich nazwy w zasadzie mogą być dowolne, byle by się zgadzały z nazwami w tablicy skoków w pliku startup.s Twojego uC. Masz w nim coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język asm
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i stąd możesz wziąć nazwy procedury obsługi przerwań. To funkcja, jak każda inna: void jakaśtamnazwa(void). Oczywiście, możesz zmodyfikować nazwy wektorów przerwań według własnego widzimisię, ważne aby te nazwy zgadzały się z tymi z pliku startup.s. Aha, __attribute__((interrupt)) możesz sobie w tej chwili darować ( korzystając ze współczesnych kompilatorów).
Pozdrawiam, QuadMan.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 wrz 2016, o 17:32 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Dzieki !



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO