Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM - Oduczenie się korzystania z bibliotek

eiliat 09 Sie 2015 11:09 1149 3
  • #1 09 Sie 2015 11:09
    eiliat
    Poziom 15  

    Hej,
    Właśnie planuje przestać korzystać z bibliotek aby nauczyć się wszystkich procesów związanych z konfigurowaniem procka. Na razie planuje przeglądając przykładowe projekty wykorzystujące biblioteki i próbować przerobić je nie wykorzystując ich tylko same, niezbędne zmiany rejestru.

    Na pierwszy ogień chcę zająć się GPIO bo świecąc diodą będę w stanie zdebugować czy to co zrobiłem działa. Używam STM32F3Discovery i mam na niej diody na portach E na pinach 8-15. Pierwszą komendą jest włączenie zegara więc próbuje tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Oczywiście RCC_AHBENR_GPIOEEN nie mam, próbuje zdefiniować. Gdzieś w Internecie znalazłem taką definicję:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Próbowałem znaleźć uzasadnienie w dokumentacji RM ale niestety nie wiem skąd ta wartość się wzięła. Pobrałem DM0043574.pdf który odpowiada STM32F3xxx i na stronie 149 mam opis tego. Ale skąd ta wartość 0x00200000 się wzięła?

    0 3
  • Pomocny post
    #2 09 Sie 2015 11:23
    szczywronek
    Poziom 27  

    eiliat napisał:
    Oczywiście RCC_AHBENR_GPIOEEN nie mam
    A niby czemu? Nazwy bitów są zdefiniowane w pliku nagłówkowym i przepisywanie tego na nowo nie ma sensu ;) Nie mówię o korzystaniu z funkcji biblioteki! Tylko z pliku nagłówkowego mikrokontrolera.

    Bit IOPEEN to 21-szy bit w rejestrze RCC_AHBENR, stąd maska bitowa: 1<<21 = 2097152 = 0x200000. Swoją drogą zwróć uwagę, że ten bit nazywa się IOPEEN a nie GPIOEEN - może właśnie dlatego go "nie masz" :)

    1
  • Pomocny post
    #3 09 Sie 2015 11:58
    SeerKaza
    Poziom 20  

    eiliat napisał:
    czywiście RCC_AHBENR_GPIOEEN nie mam, próbuje zdefiniować. Gdzieś w Internecie znalazłem taką definicję:

    Kod: c [rozwiń] [zaznacz wszystko]
    #define RCC_AHBENR_GPIOEEN ((uint32_t)0x00200000)


    Próbowałem znaleźć uzasadnienie w dokumentacji RM ale niestety nie wiem skąd ta wartość się wzięła. Pobrałem DM0043574.pdf który odpowiada STM32F3xxx i na stronie 149 mam opis tego. Ale skąd ta wartość 0x00200000 się wzięła?


    Pozbywaj się bibliotek SPL ale CMISISa zostaw te wszystkie wartości powinieneś mieć zdefiniowane w pliku nagłówkowym stm32f3xx.h lub analogicznie do twojego procesora w innym.

    szczywronek napisał:
    Bit IOPEEN to 21-szy bit w rejestrze RCC_AHBENR, stąd maska bitowa: 1<<21 = 2097152 = 0x200000. Swoją drogą zwróć uwagę, że ten bit nazywa się IOPEEN a nie GPIOEEN - może właśnie dlatego go "nie masz"

    Nie wprowadzaj kolegi w błąd w bibliotekach CMISIS są one zadeklarowane tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    EDIT

    Zapomniałem dodać w pliku nagłówkowym stm32f3xx.h musisz wybrać procek jaki masz.

    1
  • #4 09 Sie 2015 12:08
    eiliat
    Poziom 15  

    Dzięki za wyjaśnienie, przez nieuwagę dodałem f10x zamiast f30x i akurat miałem problem z portami E.

    0