-
Data: 2022-07-26 03:58:27
Temat: Re: STM32 i HAL -- pierwsze podej?cie, pierwsze pytania
Od: a...@m...uni.wroc.pl szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Arnold Ziffel <a...@h...invalid> wrote:
> Hej,
>
> Tak jak pisa?em -- zacz??em troch? rze?bi? w STM32. Programator jeszcze
> nie przyszed? (zdecydowa?em, ?e jednak nie u?yj? p?ytki Nucleo tylko od
> razu wrzuc? MCU w projektowany uk?ad), ale zacz??em pisa? kod na sucho.
>
> I tu pojawia si? kilka pyta? / problem?w.
<snip>
> 3. Czy ja dobrze widz?, ?e HAL nie udost?pnia mo?liwo?ci szybkiego
> prze??czania pinu mi?dzy wej?ciem i wyj?ciem? Tak si? sk?ada, ?e w
> pierwszym projekcie, do kt?rego chc? u?y? STM32, potrzebuj? trzech stan?w
> (niski, wysoki i wysokiej impedancji). Akurat tutaj nie potrzebuj? tego
> szybko (co 4 ms), wi?c sztuczka z wywo?ywaniem (stosunkowo ci??kiej)
> funkcji HAL_GPIO_Init() si? uda, ale nie wyobra?am sobie tego w bardziej
> krytycznych czasowo sytuacjach.
>
> A mo?e w og?le obs?uga GPIO przez HAL to zabawka dla pocz?tkuj?cych i
> nikt, kto programuje na serio, nie korzysta z tego, tylko pisze
> bezpo?rednio do port?w?
Chyba duzo ludzi uzywa HAL-a. Czesc uzywa interfejs low level.
Ja zaczelem od biblioteki 'libopencm3', z tym ze sporo rzeczy
robilem bezposrednio.
Co do szybkiego przelaczania: mysle ze filozofia wielu programow
zaklada konfiguracje na starcie a potem brak zmian. W STM32
konfiguracja moze byc dosc "ciezka": na starcie wiekszosc urzadzen
jest wylaczona (dla oszczednosci energii), zeby je uaktywnic
trzeba w paru miejscach zrobic odpowiednie ustawienia. Np.
dla GPIO jest lock register: mozesz zablokowac zmiany konfiguracji
az do nastepnego resetu.
> 4. Czy ja dobrze widz?, ?e HAL nie umo?liwia agregowania pin?w? Chcia?bym
> jednocze?nie zmieni? stan konkretnych pin?w w porcie -- czy da si? to
> zrobi? przez HAL, czy trzeba pisa? bezpo?rednio do portu?
>
> 5. Mamy pi?kny enum GPIO_PinState, a w nim warto?ci GPIO_PIN_SET oraz
> GPIO_PIN_RESET. Czy HAL umo?liwia takie skonfigurowanie portu, ?eby port
> by? zanegowany (czyli np. pisz?c PIN_SET chcemy tak naprawd? ustawi? tam
> stan niski, i tak samo odczytuj?c)? Nie widz? nic takiego, a skoro ju?
> wprowadzili HAL, to wydaje mi si? to rozs?dne i logiczne.
Normalnie chcesz zeby zapis pin(ow) to byla 1-3 instrukcje
maszynowe: w ogolnej wersji jedna umieszcza adres portu
w rejestrze procesora, druga umieszcza wartosc w rejestrze
procesora, trzecia presyla wartosc z rejestru procka do
portu. W wielu sytuacjach potrzebne sa juz w rejestrach
procesora, wtedy wystarczy pojedyncza instrukcja. Jak
masz odpowiednie makra (czy funkcje inline) to tak bedzie
(nie wiem czy HAL to robi). Negacje mozesz wrzucic w
miare prosta makrologia, ale to moze (nie musi) dodac
dodatkowe instrukcje wiec nie jest dobre jako defaultowy
ficzer.
> 7. Pytanie bardziej o sam mikrokontroler. W jakim stanie b?d? piny, gdy
> procesor wejdzie w stan resetu
W datasheet jest stan rejestrow po resecie. We wszystkich modelach
STM32 ktore widzialem normaly stan po resecie to bylo "input floating".
> (bo np. b?d? wrzuca? nowy program przez
> programator)?
Ja uzywalem STlink (sprzet) z opensourcowym programem stlink.
On _nie_ resetowal procka do programowania. Jak byla jakas
dziwna konfiguracja urzadzen to zostawala po programowaniu
Tak a propo: duzo modeli ma bootloader. Jak odpowiednio
ustawisz piny (i ewentualnie flagi konfiguracji) to
bootloader startuje po resecie. Niezaleznie od tego czy
bootloader wystatartowal mozesz programowac przez STlink
(SWD). Ale stan procka sie rozni: bootloader konfiguruje
niektore urzadzenia.
--
Waldek Hebisch
Następne wpisy z tego wątku
- 26.07.22 08:14 Marek
- 26.07.22 09:29 Janusz
- 26.07.22 09:40 Grzegorz Niemirowski
- 26.07.22 10:00 MKi
- 26.07.22 10:09 Grzegorz Niemirowski
- 26.07.22 11:48 jacek pozniak
- 26.07.22 12:01 MKi
- 26.07.22 12:03 MKi
- 26.07.22 13:48 stary grzyb
- 26.07.22 17:13 Arnold Ziffel
Najnowsze wątki z tej grupy
- zasieg radaru
- Zmywarka Bosch SRV55T43EU - awaria
- Kod zniżkowy w TME do 26.09.2025
- SFP, 10G, simplex sc/apc
- [słabe wiatry powodują - przyp. JMJ] Energetyczny paraliż w Niemczech
- NxtPaper
- Programiści nie przestają zadziwiać świat
- Długi kabel zasilający a na końcu procek
- Dlaczego nam nie idzie
- Co czujnik to inna temperatura
- Jak naprawić pilota
- Dlaczego TMP wer. 2.0 nie może być sprzedawany jako patyk USB lub karta PCIe 1x?!?
- produkcja w UE
- Pamięć SRAM nie działa z Z80182
- plyta indukcyjna - naprawa
Najnowsze wątki
- 2025-09-20 W Play chciałem kupić Huawei -- jako swój pierwszy smartfon...
- 2025-09-20 W Play chciałem kupić Huawei -- jako swój pierwszy smartfon...
- 2025-09-20 Kopiowanie telefonu
- 2025-09-20 Warszawa => AWS Cloud Engineer <=
- 2025-09-20 Łódź => Regular Network Engineer <=
- 2025-09-20 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-09-20 wrzesień
- 2025-09-20 Łomiarz wychodzi w marcu
- 2025-09-19 Czeladź => Specjalista ds. public relations <=
- 2025-09-19 Warszawa => International Freight Forwarder <=
- 2025-09-19 Warszawa => DevOps Engineer <=
- 2025-09-19 zasieg radaru
- 2025-09-19 JAK nie formułować sprzeciwów w kwestii Strefy w Gazie [Niemcy: Hasło rodem z III Rzeszy]
- 2025-09-19 Zmywarka Bosch SRV55T43EU - awaria
- 2025-09-18 Kuczyński twierdzi że WIBOR nie jest do ruszenia w sądach