Strona 1 z 1

[STM32] Zamiennik _delay_ms na Systicku

: czwartek 02 lut 2017, 18:23
autor: dambo
Witam, robię porządki w bibliotekach i tymi przydatnymi się podzielę, może komuś się przyda.

Na początek - prosta funkcja opóźniająca (wiem, że normalnie się tego nie powinno stosować, ale do nauki się przydaje), której mi zawsze brakowało. Oparta na Systicku - trzeba tylko podać z jakim zegarem jest taktowany.

Do pobrania z gita:
https://github.com/dambo1993/STM_DMB_LI ... tick_delay

Re: [STM32] Zamiennik _delay_ms na Systicku

: czwartek 02 lut 2017, 22:31
autor: inż.wielki
Co do tego że nie powinno się stosować, to też nie prawda. Powinno, ale w odpowiednich miejscach, ale też nie powinno się przesadzać z tym. Przecież wiadomo że nie wszystko da się zrobić bez używania takiego zatrzymania. Jeżeli jeszcze aplikacja jest pisana z wykorzystaniem RTOS'a albo innego systemu czasu rzeczywistego, to taki delay jest całkiem przydatny.

Re: [STM32] Zamiennik _delay_ms na Systicku

: piątek 03 lut 2017, 09:50
autor: inż.wielki
rezasurmar pisze:Po prostu w pętli głównej być tego nie powinno.


W większości się z Tobą zgadzam, jednak, bez wykorzystania delay'a w pętli głównej, jeżeli cała aplikacja działa z wykorzystaniem RTOS'a to procesor się zajedzie. Zwykły while(1) bez żadnego dileja nie pozwoli na płynne przełączanie tasków.

Re: [STM32] Zamiennik _delay_ms na Systicku

: piątek 03 lut 2017, 12:39
autor: inż.wielki
Procesora się nie zatrzymuje, ale wkładając petle while(1) w task, a to jest dość popularne i normalne, pozwalasz na przełączenie taska. Spróbuj sobie zrobić task i machnąć w min pętle nieskończoną, która nie będzie miała dileja, zobaczysz że mimo tego, inne taski się nie wykonają, sprawdziłem to. A nie mówię że się nie da inaczej, ostatnio napisałem oprogramowanie gdzie petla jest pusta a kod wykonuje się z przerwań. Ale to zależy od przeznaczenia i zadań dla oprogramowania.