-
Data: 2022-07-25 17:10:02
Temat: STM32 i HAL -- pierwsze podejście, pierwsze pytania
Od: a...@h...invalid (Arnold Ziffel) szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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.
1. STM32CubeMX nie umożliwia ustawienia pull-upa na wejściowym pinie.
Zakładam, że to błąd. Można to obejść edytując wygenerowany main.c (co
i tak zostanie nadpisane przy najbliższej zmianie w CubeMX) lub konfigurując
port jeszcze raz, już po tej konfiguracji z main.c. Czy jest bardziej
elegancki sposób? Może edycja pliku .ioc? Jest tekstowy i widzę w nim:
PA0-WKUP.GPIOParameters=GPIO_Label
PA0-WKUP.GPIO_Label=KEY
PA0-WKUP.Locked=true
PA0-WKUP.Signal=GPIO_Input
Może tu coś można dopisać?
2. Podobnie jest z pinami wyjściowymi -- nie widzę nigdzie możliwości
ustawienia ich domyślnego stanu. HAL konfiguruje je jako wyjścia i tyle. W
jakim stanie te wyjścia będą zaraz po konfiguracji i czy można to zmienić?
Znów, fragment pliku .ioc:
PC13-ANTI_TAMP.GPIOParameters=GPIO_Label
PC13-ANTI_TAMP.GPIO_Label=LED
PC13-ANTI_TAMP.Locked=true
PC13-ANTI_TAMP.Signal=GPIO_Output
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?
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.
6. Szablon generowany przez CubeMX jest wyindentowany dwiema spacjami. Ja
mam inny styl pisania. Czy jest możliwość zmiany indentacji wygenerowanego
kodu w taki sposób, żeby kolejna generacja kodu mi tego nie przywróciła?
Na razie poradziłem sobie tak, że po prostu przeniosłem swój kod do
osobnego pliku i wołam go z wygenerowanego main.c, ale burzy mi to
poczucie estetyki.
7. Pytanie bardziej o sam mikrokontroler. W jakim stanie będą piny, gdy
procesor wejdzie w stan resetu (bo np. będę wrzucał nowy program przez
programator)? Piny zostaną tak, jak są, czy przejdą w stan wysokiej
impedancji? Może można jakoś wymusić ich konkretny stan przed samym
programowaniem? Mam do pinów podłączony LCD, więc z oczywistych powodów
nie chcę na nich DC.
Chyba na razie tyle z pytań...
Pozdr.
--
- Dlaczego słoń nie może mieć dzieci z zebrą?
- Bo nie potrafi z niej zdjąć tej cholernej piżamy w paski!
Następne wpisy z tego wątku
- 25.07.22 18:11 Grzegorz Niemirowski
- 25.07.22 21:20 Arnold Ziffel
- 26.07.22 03:58 a...@m...uni.wroc.pl
- 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
- Weryfikacja myjki ultradźwiękowej
- 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
Najnowsze wątki
- 2025-09-22 Kraków => Koordynator Produkcji / Przedstawiciel ds. rozwoju produktu
- 2025-09-22 Warszawa => Head of Technology/CTO <=
- 2025-09-22 Kraków => Production Coordinator / Representant Product Dev <=
- 2025-09-22 Warszawa => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-09-22 Warszawa => International Freight Forwarder <=
- 2025-09-22 Warszawa => Starszy Programista C <=
- 2025-09-22 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-09-21 Duduś chce zostać milionerem! Już zaciągnął kredyt i kupił mieszkanie 700m2, a teraz napisał i wydał ks. pt. "To ja"!
- 2025-09-21 Nowe uprawnienia PIP od 1 stycznia 2026
- 2025-09-21 Weryfikacja myjki ultradźwiękowej
- 2025-09-21 Wyłudzenia świadczeń przez obcokrajowców
- 2025-09-21 wprowadzili system kaucyjny ustawą
- 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