ATNEL tech-forum
https://forum.atnel.pl/

STM32 i przerwanie UART IDLE brak volatile
https://forum.atnel.pl/topic24041.html
Strona 1 z 1

Autor:  matej1410 [ 23 lis 2021, o 10:31 ]
Tytuł:  STM32 i przerwanie UART IDLE brak volatile

Witam.

W internecie krąży mnóstwo poradników jak obsługiwać przerwania od stanu idle na linii UART w STM-ach. Jest to super rozwiązanie w przypadku gdy nie wiemy ile znaków przychodzi od urzaądzenia do uC (np. obsługa modemów poprzez komendy AT).

tu np. po polsku: https://msalamon.pl/dostalismy-swietna- ... le-w-halu/
tu np. po angielsku: https://controllerstech.com/uart-dma-wi ... detection/
filmik (streszczenie) na YT do wersji angielskiej: https://www.youtube.com/watch?v=Bo6MC5A8uTE&t=397s

Wszyscy definiują bufor do odebrania danych (który jest wypełniany danymi w przerwaniu) jako uint8_t pomijając volatile.
Czy wszyscy się mylą czy w tym przypadku bufor nie musi być volatile?

Autor:  Zealota [ 23 lis 2021, o 12:33 ]
Tytuł:  Re: STM32 i przerwanie UART IDLE brak volatile

Wg mnie nie jest wcale potrzebne volatile przy buforze, bo niby dlaczego?
Dodajemy ten operator po to żeby na zmiennej nie dochodziło do optymalizacji. Kompilator wie, że nie należy "ruszać" takiej zmiennej.
Taki bufor to zawsze jest tablica w pamięci, najczęściej globalna i zarazem statyczna, a wskaźnik na bufor jest również formalnie typu "const" i w trakcie działania programu nie podlega żadnym zmianom, a kompilator i tak nie będzie "ruszał" takiego bloku pamięci.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/