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

stm32F4 - SysTick nie wywołuje przerwania co 1ms, jak to naprawić?

bazinga30rock 03 Sie 2014 11:38 2199 9
REKLAMA
  • #1 13847415
    bazinga30rock
    Poziom 7  
    Posty: 25
    Ocena: 2
    Cześć

    Staram się skonfigurować SysTick'a w taki sposób żeby zgłaszał przerwanie co 1ms ale w ogóle nie jest uruchamiana funkcja obsługi przerwania... Nie wiem co trzeba zrobić.
    Funkcja konfigurująca SysTick:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Wywołanie funkcji konfiguracyjnej:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Funkcja opóźniająca :
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Zmienna licznik_ms powinna się zwiększać co 1ms w funkcji obsługi przerwania lecz tego nie robi. Ciągle jest 0.
    Funckja obsługi przerwania:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Jeżeli ktoś wie w czym tkwi problem proszę o pomoc.
  • REKLAMA
  • REKLAMA
  • #3 13847748
    Loker
    Poziom 39  
    Posty: 3368
    Pomógł: 575
    Ocena: 722
    Jak i gdzie jest zdefiniowana zmienna licznik_ms?
  • REKLAMA
  • #5 13848380
    bazinga30rock
    Poziom 7  
    Posty: 25
    Ocena: 2
    Dzięki za zainteresowanie.
    Zmienna licznik_ms jest zdefiniowana w pliku z funkcją obsługującą przerwanie w taki sposób:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Z funkcją biblioteczną jest to samo... ;/

    Nie mam pomysłu kompletnie.
  • #6 13848574
    mi14chal
    Poziom 28  
    Posty: 1021
    Pomógł: 112
    Ocena: 23
    Wektory przerwań ustawione?
  • #7 13848930
    el2010tmp
    Poziom 25  
    Posty: 713
    Pomógł: 97
    Ocena: 44
    Przykład z biblioteką SPL:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #8 13849298
    Elektro_guru
    Poziom 11  
    Posty: 73
    Ocena: 9
    Witam,
    a ten SysTick to z którego zegara jest taktowany?

    Domyślnie jest taktowany z AHB/8 więc trzeba włączyć taktowanie magistrali AHB.
    Taki mam pomysł.
  • #9 13849820
    mrh
    Poziom 18  
    Posty: 572
    Pomógł: 15
    Ocena: 13
    Ja mam taką funkcję od opóźnienia zrobionego na podstawie SysTick'a, nawet działa. Korzystam z niej podczas komunikacji 1wire i wszystko pięknie śmiga.
    W funkcji delay_init( 168 ); wpisujesz częstotliwość zegara w MHz np. dla STM32F4.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #10 13850015
    bazinga30rock
    Poziom 7  
    Posty: 25
    Ocena: 2
    Ok, dzięki za zainteresowanie się tematem:) Problem został rozwiązany a powodem złego działanie było błędne mapowanie pamięci RAM.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik miał problem z konfiguracją przerwania SysTick w mikrokontrolerze STM32F4, które nie wywoływało przerwania co 1 ms. W odpowiedziach zasugerowano sprawdzenie, czy procedura obsługi przerwania jest uruchamiana oraz czy zmienna licznik_ms jest poprawnie zdefiniowana jako volatile. Podano również przykłady konfiguracji SysTick z użyciem funkcji SysTick_Config oraz wskazano na możliwość błędnego mapowania pamięci RAM jako przyczynę problemu. Ostatecznie problem został rozwiązany przez użytkownika.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA