logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[STM32L011D3][C/Eclipse] Przerwania zewnętrzne na pinie nie działają

Kertoip95 16 Cze 2017 12:00 1236 2
REKLAMA
  • #1 16532954
    Kertoip95
    Poziom 10  
    Posty: 76
    Ocena: 1
    Szukałem już chyba wszędzie i próbowałem wszystkiego, więc ostatecznie zmuszony jestem założyć tutaj temat. Uczę się programować stmy na "rejestrach". Utknąłem przy próbie włączenia przerwań zewnętrznych na pinie PA1 (pull-up, zbocze opadające). Jeżeli chodzi o sposób testowania to sprawdzam w STMStudio wartość zmiennej tmp, która powinna się inkrementować w każdym przerwaniu. Próbowałem też włączać LEDa na innej linii, więc sposób sprawdzania nie ma tu nic do rzeczy. Przerwanie od SysTicka działało bez problemów.
    Oto kod:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    UPDATE

    Sprawdziłem w ST-Link Utility czy w komórce pamięci 0x00000054 odpowiedzialnej za EXTI[1:0] coś jest i niestety jest pusto. Przy włączaniu/wyłączaniu przerwań od SysTicka zmieniają się wartości, a tutaj nic. Wydaje mi się, że ustawienia rejestrów są dobre, tylko z jakiegoś powodu przerwania nie chcą się włączyć. Tylko dlaczego?
  • REKLAMA
  • Pomocny post
    #2 16534913
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Sprawdź, cza nazwa Twojej procedury obsługi przerwania jest taka sama, jak w tablicy adresów przerwań w pliku startup.

    Wyrzuć zbędne wywołanie SetPriority.
  • #3 16535252
    Kertoip95
    Poziom 10  
    Posty: 76
    Ocena: 1
    Rzeczywiście tutaj był problem.

    Porównałem plik startup wygenerowany dla tego procka przez HALa i ten mój. W moim nie było żadnych procedur obsługi przerwań oprócz tych dla rdzenia (dlatego SysTick działał). Dzięki.
REKLAMA