Skocz do zawartości

Programowanie STM32


elektryczny22

Pomocna odpowiedź

Witam, Właśnie niedawno zacząłem bawić STM32 Mam STM32F4-Disco i drugi mniejszy moduł stm32f103c8t6. Korzystam z HAL i StdLib w System Workbench for STM32 ogólnie wiekszość mi działa, korzystałem z kursów forbota. Czytałem ze te biblioteki maja pewne wady (narzut kodu + opóźnienia) za to są łatwiejsze w obsłudze (jak wiadomo coś za coś). Chciałem spróbować operacji na samych rejestrach. Moje pytanie jak powinienem skonfigurować sobie Workbench tak aby nie korzystać z tych bibliotek i jak pisać kod ( skąd czerpać informacje na temat składni w C). 🙄

Link do komentarza
Share on other sites

Po prostu klepiesz na rejestrach na, nie musisz inkludować bibliotek, z resztą tutaj masz cały kurs: http://www.elektroda.pl/rtvforum/topic3111562.html

Rejestry warto znać - wiesz co się dzieje w procku i program jest mniej pamięciożerny, ale nie jest niestety przenośny między procesorami - rejestry pomiędzy np rodziną F1 a F4 mocno się różnią.

Link z innego forum bo innego dobrego kursu na rejestrach nie znam.

Dodajesz tylko:

#include "stm32f10x.h"

i piszesz kod np (STM32F1 nucleo) - powinna migać zielona dioda

#include "stm32f10x.h"
int main(void)
{
AFIO->MAPR |= (1 << 25); //JTAG disable

gpio_pin_cfg(GPIOA, 5, GPIO_MODE_OUT_PP_50MHZ);  //http://www.freddiechopin.info/pl/download/category/6-przyklady
while (1)
{
             //BB(GPIOA->ODR,(1<<5) ) ^= 1;
              GPIOA->ODR ^= (1<<5);
for(delay = 1000000; delay; delay--){};
}
}

Poradnik powyżej jest ok, tylko odpuść sobie konfigurację eclipsa wg. Freddiego Choppina (nieaktualne, pracochłonne i trzeba kombinować i szukać aby działało) - zostań przy workbenchu, ewentualnie możesz w Properties możesz pogrzebać i usunąć USE_HAL .... i z linkera wyrzucić linki do bibliotek hala.

Kompilator ma budowany garbage collector więc jak nie będziesz używać bibliotek to nie będą powiększać kodu wynikowego.

Co do ANSI C to moje prpozycje: https://pl.wikibooks.org/wiki/C

Link do komentarza
Share on other sites

elektryczny22, nie musisz rezygnować z bibliotek jeśli chcesz pobawić się rejestrami. Największy problem z stm32 to ich możliwości - jak na ironię są tak rozbudowane i skomplikowane, że wykorzystanie ich pełnych możliwości bez użycia bibliotek jest po prostu bardzo pracochłonne. Biblioteki pozwalają na szybsze i łatwiejsze pisanie programów. Zamiast z nich rezygnować bo podobno mają wady, spróbuj te wady odkryć. Przykładowo, jeśli jakiś fragment kodu działa za wolno, może warto go zoptymalizować. Wtedy jak najbardziej przydaje się bezpośredni dostęp do rejestrów. Ale znowu - biblitoteka ma plusy. Dzięki niej możesz napisać pierwszą, nieoptymalną wersję programu i zacząć go testować. Później możesz zmieniać kod i porównywać wyniki - jeśli coś przestanie działać, będziesz mógł wrócić do poprzedniej wersji. Kod źródłowy większości bibliotek jest dostępny, więc zamiast wynajdować od nowa koło, możesz zobaczyć jak biblioteka odwołuje się do rejestrów.

A jeśli chcesz autentycznie pobawić się sprzętem, zostać prawdziwym geekiem to radziłbym pouczyć się asemblera. Dostęp do rejestrów w C to nadal ukrywanie wielu istotnych szczegółów. Pisząc niskopoziomowo można wykorzystać w pełni platformę - ale to prawdziwe wyzwanie. A dostęp do rejestrów w C i asemblerze jest podobny.

  • Lubię! 1
Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.