Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

STM32 F4 - Przerwania zewnętrzne nie działają

michalt38 23 May 2016 20:20 1119 7
  • #1
    michalt38
    Level 5  
    Witam,
    używam płytki Nucleo F446RE i mój problem polega na tym, że nie działają mi na niej przerwania zewnętrzne. Celem poniższego kodu jest, aby w momencie, kiedy przyciśnięty jest przycisk na pinie 13, zapalała się dioda na pinie 5 (te elementy umieszczone są na płytce). Czy wie ktoś z was może na czym polega błąd? Z góry dziękuję za odpowiedź.

    Code: c
    Log in, to see the code
  • #4
    Freddie Chopin
    MCUs specialist
    W świecie teoretycznym ten kod może działać. W praktycznym jest bezużyteczny z bardzo prostej przyczyny - przycisk który Ty naciskasz "raz" może wygeneruje tylko jedno zbocze, a może 10000 (drganie styków). To że ktoś coś gdzieś napisał w internecie (nawet jeśli nazwał to "kurs") nie oznacza jeszcze, że to jest porządne.
  • #5
    michalt38
    Level 5  
    Ok, rozumiem, dzięki wielkie za wyjaśnienie :)
  • #6
    DSB
    Level 15  
    Freddie Chopin wrote:
    przycisk który Ty naciskasz "raz" może wygeneruje tylko jedno zbocze, a może 10000 (drganie styków).

    W jaki sposób w takim razie "sensownie" obsłużyć przyciski? Polling i softwareowy debouncing - to wiem, a jak to zrobić sensownie/porządnie?
  • #7
    Freddie Chopin
    MCUs specialist
    odczytywać stan przycisku w timerze (programowym, sprzętowym, jakimkolwiek) co (przykładowo) - 20-50ms i zapisywać to do zmiennej. Zmienna ta to "odfiltrowany" stan przycisku. Ewentualnie - jeśli masz już RTOSa albo kolejkę zdarzeń - z funkcji wywoływanej co te 20-50ms można od razu kolejkować jakieś zdarzenia.
  • #8
    PDT
    Level 24  
    Mała podpowiedź z mojej strony, przycisk odczytujemy w odstępach dłuższych niż czas drgań, pamiętając że nie drgałby gdyby go nie naciśnięto :)
    Pzdr