-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
e.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!news.mixmin.net!aioe
.org!news.chmurka.net!.POSTED.s.v.chmurka.net!not-for-mail
From: a...@h...invalid (Arnold Ziffel)
Newsgroups: pl.misc.elektronika
Subject: STM32 i HAL -- pierwsze podejście, pierwsze pytania
Date: Mon, 25 Jul 2022 15:10:02 +0000 (UTC)
Organization: news.chmurka.net
Message-ID: <1...@h...invalid>
NNTP-Posting-Host: s.v.chmurka.net
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 25 Jul 2022 15:10:02 +0000 (UTC)
Injection-Info: vps.chmurka.net; posting-account="arnold";
posting-host="s.v.chmurka.net:172.24.44.20"; logging-data="17187";
mail-complaints-to="abuse-news.(at).chmurka.net"
User-Agent: tin/2.6.1-20211226 ("Convalmore") (Linux/5.15.32-v7+ (armv7l))
Cancel-Lock: sha1:kHgGxdl9nvIcYtFtGjeH/hXdG7I=
Xref: news-archive.icm.edu.pl pl.misc.elektronika:773467
[ ukryj 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
- ciekawy układ magnetofonu
- Mikroskop 3D
- Jak być bezpiecznym z Li-Ion?
- Szukam monitora HDMI ok. 4"
- Obcinaczki z łapaczem
- termostat do lodowki
- SEP 1 kV E
- Aku LiPo źródło dostaw - ktoś poleci ?
- starość nie radość
- Ataki hakerskie
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
Najnowsze wątki
- 2024-12-23 Riga => Specjalista ds. public relations <=
- 2024-12-23 Łódź => Specjalista ds. Sprzedaży <=
- 2024-12-23 Kraków => International Freight Forwarder <=
- 2024-12-23 Co nalezy do Cinkciarza, a co do Conotoxia ?
- 2024-12-23 Poznań => Key Account Manager <=
- 2024-12-23 Warszawa => Presales / Inżynier Wsparcia Technicznego IT <=
- 2024-12-23 Rzeszów => Spedytor Międzynarodowy <=
- 2024-12-23 Warszawa => Infrastructure Automation Engineer <=
- 2024-12-23 Białystok => Analityk w dziale Trade Development (doświadczenie z Po
- 2024-12-23 Warszawa => Site Reliability Engineer (SRE) <=
- 2024-12-23 Warszawa => DevOps Engineer <=
- 2024-12-23 Warszawa => Senior Account Manager <=
- 2024-12-23 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-23 Katowice => Administrator IT - Wirtualizacja i Konteneryzacja <=
- 2024-12-23 Mińsk Mazowiecki => Spedytor Międzynarodowy <=