Цитата:
а как сделать задержку таймером базовым?
Элементарно. Вот так можно сделать паузу примерно на SCREEN_PAUSE миллисекунд в конечном автомате:
Код:
case SCREEN_WAIT: // wait
if(Tms - Tscr_last > SCREEN_PAUSE){
//USB_send("Pause ends\n");
ScrnState = SCREEN_UPDATENXT;
}
А переменная Tms глобальная:
Код:
volatile uint32_t Tms = 0;
void sys_tick_handler(void){
++Tms;
}
И вообще, блокирующие паузы нельзя делать нигде, кроме инициализации. Особенно если эти паузы больше, чем на пару-тройку тактов ядра! А уж блокирующие паузы по полсекунды, как тупые абдуринщики делают, так вообще нонсенс!