Skocz do zawartości

Czy biblioteka Hal dla stm32 umożliwia zapis ew. modyfikację całego portu


Pomocna odpowiedź

Napisano

Jestem nowicjuszem jeśli chodzi o programowanie STM32 ale mikrokontrolery programuję od lat (8051 w asemblerze oraz AVR w C). Teraz próbuję opanować STM32. Poznając nowy mikrokontroler zauważyłem że nigdzie w kodach przykładowych nie używa się zapisu do portu ani modyfikacji całego portu choćby przez and lub or ale wszędzie poprzestaje się na zmianie stanu pojedyńczego pinu. Podejrzewam że to ma jakieś uzasadnienie ale jestem b. ciekaw jakie. Czy biblioteka HAL w ogóle umożliwia zapis do portu . Może ktoś zechce wyjaśnić. Z góry dziękuję i pozdrawiam.   

Dziękuję _LM_ za odpowiedź. Posiadam kurs STM32L4 w wersji książkowej. Czytałem ten rozdział kilka razy ale nic na ten temat nie zauważyłem. Wieczorem przeczytam ten rozdział jeszcze raz dla pewności że niczego nie przegapiłem . Dla pewności chcę uściślić. Chodzi mi o zapis podobny jak dla AVR to jest np. PORTB=0xFF a tu mogłoby być np. PORTB=0xFFFF . lub np, GPIO_PORTB=0xFFFF lub coś podobnego. Mam nadzieję że teraz lepiej wyjaśniłem o co mi chodzi. Pozdrawiam.

@Dinosaurus Jeśli wszystkie piny należą do tego samego portu, to możesz użyć kombinacji pinów w wywołaniu HAL_GPIO_WritePin, czyli przykładowo:

HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin | LED2_Pin, GPIO_PIN_SET);

Można nawet użyć coś na wzór PORTB |= 0xffff, czyli:

HAL_GPIO_WritePin(GPIOB, 0xffff, GPIO_PIN_SET);

 

  • Lubię! 1
  • Pomogłeś! 1

Elvis napisał:

Cytat

Między tymi "cząstkowymi" operacjami mogą wystąpić przerwania, a jeśli korzystamy z RTOS-a mogą się nawet wykonać inne wątki. To może powodować wiele problemów, dlatego HAL używa rejestrów BSRR do ustawiania, a BRR do kasowania bitów - to są operacje atomowe, czyli przerwania nie mają na nie wpływu.

i to jest genialna odpowiedź która wyjaśnia dlaczego HAL nie stosuje zapisu  w stylu PORTx=coś_tam. Jeszcze raz dziękuję. Pozdrawiam.

  • Lubię! 1

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