Делаю такое на прототридах Дункелса и простых разностях (таймер -
сохраненное значение) https:/…x/blog/244361/
static uint16_t base = 0;
PT_THREAD(example(struct pt *pt))
{
PT_BEGIN(pt);
base = timer_1ms();
PT_WAIT_WHILE(pt, timer_1ms() - base < 10);
Switch_On();
base = timer_1ms();
PT_WAIT_WHILE(pt, timer_1ms() - base < 200);
Switch_Off();
base = timer_1ms();
PT_WAIT_WHILE(pt, timer_1ms() - base < 55000);
Switch_On();
base = timer_1ms();
PT_WAIT_WHILE(pt, timer_1ms() - base < 50);
Switch_Off();
PT_END(pt);
}