Skocz do zawartości

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


Pomocna odpowiedź

Napisano

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:)

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

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?

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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...