Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[STM32] Wyłączenie przerwanie od EXTI

sebus_1985 25 Aug 2011 09:46 4204 8
  • #1
    sebus_1985
    Level 11  
    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]
    Code: c
    Log in, to see the code
  • #3
    sebus_1985
    Level 11  
    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.
  • Helpful post
    #4
    gaskoin
    Level 38  
    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.

    Code: c
    Log in, to see the code


    Wystarczyło poszukać w nagłówku, który masz już na komputerze.
  • #5
    sebus_1985
    Level 11  
    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.
  • Helpful post
    #6
    gaskoin
    Level 38  
    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).
  • #7
    pzk
    Level 11  
    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
    sebus_1985
    Level 11  
    Zrobiłem jak poradził gaskoin. I poszło jak z płatka.