Код
void ledBlinging1 (vodi)
{
led1On();
delayms(1000);
led1Off();
delayms(1000);
}
void ledBlinging2 (vodi)
{
led2On();
delayms(1000);
led2Off();
delayms(1000);
}
{
led1On();
delayms(1000);
led1Off();
delayms(1000);
}
void ledBlinging2 (vodi)
{
led2On();
delayms(1000);
led2Off();
delayms(1000);
}
При размещении этих функций внутри задач rtos они будут моргать не влияя друг на друга. А если я озадачусь сделать тоже моргание без rtos, так чтобы они моргали независимо, то мне придется накидать витиеватый алгоритм запоминания предыдущего состояния и следить, сколько времени прошло, не пора бы потушить или зажечь... Но если я реализую функцию загрузки и выгрузки контекста функции, то такой алгоритм городить не придется. Пусть такая функция есть и называется она downloadContext (), а функция приостановки и сохранения контекста yeld(). Тогда, то же моргание без РТОС будет выглядеть следующим образом:
Код
void ledBlinging1 (void)
{
led1On();
timer1.setMs(1000);
while (timer1.expired() == FALSE) yeld();
led1Off();
timer1.setMs(1000);
while (timer1.expired() == FALSE) yeld();
}
void ledBlinging2 (void)
{
led1On();
timer1.setMs(1000);
while (timer2.expired() == FALSE) yeld();
led2Off();
timer2.setMs(1000);
while (timer2.expired() == FALSE) yeld();
}
int main (void)
{
while (1)
{
downloadContext (ledBlinging1);
downloadContext (ledBlinging2);
}
}
{
led1On();
timer1.setMs(1000);
while (timer1.expired() == FALSE) yeld();
led1Off();
timer1.setMs(1000);
while (timer1.expired() == FALSE) yeld();
}
void ledBlinging2 (void)
{
led1On();
timer1.setMs(1000);
while (timer2.expired() == FALSE) yeld();
led2Off();
timer2.setMs(1000);
while (timer2.expired() == FALSE) yeld();
}
int main (void)
{
while (1)
{
downloadContext (ledBlinging1);
downloadContext (ledBlinging2);
}
}
Может я чего неправильно сказал, но надеюсь смысл понятен. Вопрос: как сделать такое сохранение и загрузку контекста? Где про это можно почитать, посмотреть пример и т.п.
Спасибо!