Skocz do zawartości
bartek1333

Programowanie STM32 Cortex-M0 na rejestrach - plik nagłówkowy

Pomocna odpowiedź

Witam,

Mam płytkę STM32 Discovery z uC z rdzeniem Cortex-M0. Chciałbym programować bezpośrednio na rejestrach - jak w AVR'ach. Wiem że istnieje biblioteka od STM'a, ale po przeczytaniu różnych opinii na jej temat oraz mając na uwadze, że chcę dobrze zrozumieć mikrokontroler, chcę operować bezpośrednio na rejestrach.

I teraz pytanie. W AVR'ach do projektu dołączałem plik nagłówkowy avr/io i śmigało a tutaj, skąd wziąć taki plik? Jak czytam to wszędzie jest opis biblioteki SPL, natomiast nie ma nic o takowym pliku nagłówkowym. Czy jest on już w danym środowisku, np. Keil , CooCox czy go trzeba pobrać skądś?

I drugie pytanie. Czy rdzenie M3 i M0 są na tyle podobne, że jeśli w książce o M3 poczytam o Timerach, UART, DMA, to będę mógł zastosować tę wiedzę w M0?

Pozdrawiam:)

Udostępnij ten post


Link to post
Share on other sites

A więc jak masz ściągniętego Coocoxa wystarczy tylko, że zaznaczysz w zakładce repository pliki cmsis'a (ptaszki przy cmsis core i cmsis boot) a do programu dodasz pliki nagłówkowe :

Co do drugiego pytania - te procki są podobne, ale nie takie same. Zobaczysz różnicę w rejestrach, ale samo działanie raczej nie będzie inne.

Jak dobrze rozumiem Ty będziesz działał wstecz tzn czytał o M3 a programował M0, musisz więc tylko dobrze porównywać dokumentacje tych procków, bo czasami M3 mogą mieć coś więcej od M0.

Dobre jest to, że mikrokontrolery w takich samych obudowach mają takie same pinouty niezależnie od rodziny (M0/M3/M4).

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Działa, dzięki, piwko dla Ciebie 🙂

Czyli tak podsumowując, te dwa pliki nagłówkowe są gołymi, podstawowymi plikami od ARM, bez udziwnień funkcjami i za pomocą tego programuje się zawsze, w firmach również, chcąc operować na rejestrach?

Nasunęło mi się pytanie. Rozumiem, że plik startup jest zawsze automatycznie dodawany do projektu i dzięki niemu nie muszę się martwić o inicjalizację mikrokontrolera, tak? On włącza mi też zegary dla peryferiów czy to muszę zrobić sam?

A jakbym nie dołączyć cmsis boot, to bym musiał go sam inicjalizować, a poza tym by było ok?

Udostępnij ten post


Link to post
Share on other sites
Czyli tak podsumowując, te dwa pliki nagłówkowe są gołymi, podstawowymi plikami od ARM, bez udziwnień funkcjami i za pomocą tego programuje się zawsze, w firmach również, chcąc operować na rejestrach?

Tak, można to tak nazwać 😉

Co do drugiego pytania, musisz sobie to dobrze zobaczyć. Jak ja programowałem M0/M3 pamiętam że pisałem własną inicjalizację, za to z kolei w M4 po stworzeniu nowego projektu w pliku main.c miałem komentarz dodany automatycznie, że przed wejściem w main wywołuje się funkcja SystemInit().

Także niestety nie powiem Ci na pewno jak to jest, najlepiej napisz proste miganie diodami, raz bez SystemInit() w main'e, a raz z.

Tą funkcję, znajdującą się w system_stm32fxxx, możesz sobie modyfikować, robić tzw overclocking itp.

pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...