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

[STM32] Jak wyłączyć przerwanie EXTI podczas transmisji USART?

sebus_1985 25 Sie 2011 09:46 4774 8
REKLAMA
  • #1 9860594
    sebus_1985
    Poziom 11  
    Posty: 26
    Ocena: 1
    Witam, Od razu pisze że nie jestem mistrzem w pisaniu programów, a z stm zaczynam swoją przygodę.
    Chce wyłączyć przerwanie od EXTI na przykład po obsłudze tego przerwania:
    Do wyłączenie/wyłączenia przerwania np. od Timera jest
    TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //TIM IT enable

    Generalnie chodzi mi o to że muszę zrobić detekcje sekwencji ZBOCZE OPADAJĄCE - 100us - ZBOCZE NARASTAJĄCE. Do detekcji wykorzystuje EXTI. Czas przerwy odliczam przy pomocy Timera. Po tej sekwencji jest transmisja USART(też na przerwaniach). Jeżeli jest transmisja chce, żeby były wyłączone przerwania od EXTI. Korzystam z bibliotek CMSIS.

    Czy może mi ktoś poradzić jak to zrobić, albo gdzie szukać rozwiązania?
    Z góry dziękuje.

    Zamieszczam kawałek kodu od obsługi przerwań:\
    [code]
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 9864919
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    To chyba 4 czy 5 temat o EXTI w ciągu miesiąca... Ile razy można? To nie helpline, tylko forum - najpierw się szuka, potem pisze nowy temat.

    4\/3!!
  • REKLAMA
  • #3 9867918
    sebus_1985
    Poziom 11  
    Posty: 26
    Ocena: 1
    Przeczytałem wszystkie tematy, które znalazłem, ale tam jest tylko jak skonfigurować przerwania. Ja przerwania mam skonfigurowane i działają. Gorzej jest z wyłączeniem przerwania a potem z ponownym jego włączeniem.
  • REKLAMA
  • Pomocny post
    #4 9868083
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Pisałem gdzieś jak się je włącza, na co Freddie napisał, że są funkcje w CMSIS, które z resztą na forum też już wklejałem.

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


    Wystarczyło poszukać w nagłówku, który masz już na komputerze.
  • #5 9870689
    sebus_1985
    Poziom 11  
    Posty: 26
    Ocena: 1
    Bardzo dziękuje za pomoc. Dopiero zaczynam swoja przygodę z STM i jeszcze nie do końca wiem co gdzie szukać. Nawet jeżeli było na forum to mogłem to przeoczyć lub szukałem nie tego co trzeba. Myślę, że to rozwiąże mój problem.
  • Pomocny post
    #6 9870846
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Najwięcej szukaj w manualu. Ja też nie wiedziałem o tych funkcjach i z manualem sam do tego doszedłem jak się wyłącza przerwania (doszedłem to dość sporo powiedziane - tam to poprostu jest napisane).
  • REKLAMA
  • #7 9964574
    pzk
    Poziom 12  
    Posty: 25
    Pomógł: 2
    odnośnie wyłączenia i ponownego włączenia przerwania funkcjami: NVIC_EnableIRQ(IRQn_Type IRQn), NVIC_DisableIRQ(IRQn_Type IRQn) czy podczas ponownego włączenia nie trzeba znów wpisać odpowiednich wartości do rejestrów konfiguracyjnych? Ponieważ ostatnio próba wyłączenia i ponownego włączenia przerwania bez ponownego wpisu do rejestrów konfiguracyjnych nie dała pożądanego rezultatu, poradziłem sobie zerując bit w rejestrze EXTI->IMR i ponownie go ustawiając. Czy coś robiłem źle czy podczas wyłączenia funkcją NVIC_DisableIRQ(IRQn_Type IRQ) rejestry IMR, FTSR, EXTICR itp wracają do wartości po resecie.
  • #9 11141698
    sebus_1985
    Poziom 11  
    Posty: 26
    Ocena: 1
    Zrobiłem jak poradził gaskoin. I poszło jak z płatka.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje sposobu na wyłączenie przerwania EXTI podczas transmisji USART w mikrokontrolerach STM32, korzystając z bibliotek CMSIS. Po skonfigurowaniu przerwań, problemem jest ich wyłączenie i ponowne włączenie. Odpowiedzi na forum sugerują użycie funkcji NVIC_EnableIRQ i NVIC_DisableIRQ do zarządzania przerwaniami. Użytkownicy podkreślają, że rejestry konfiguracyjne nie wracają do wartości domyślnych po wyłączeniu przerwania, a także zalecają korzystanie z dokumentacji technicznej. Ostatecznie, użytkownik potwierdza, że zastosowanie wskazówek pomogło rozwiązać problem.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA