STM32 FreeRTOS 非阻塞延时实战:用 APP_Time_IsElapsed 让多任务和平共处
对于我们的定时函数来说,最坏情况是多等了 1ms 才被下次调用,对于 100ms 周期的任务而言,误差 ±1% 完全可以接受。借用系统滴答计数器 HAL_GetTick(),给每一个需要定时的功能配上一个“私有闹钟”——一个静态变量 last_tick,记录上次执行的时间。但如果在各自的函数里面直接写一个 HAL_Delay(100) 或者 osDelay(100),整个任务都会被卡住,按键扫描就完全没法工作了。osDelay(1) 让出 CPU,保证了整个系统的实时性,完全不影响其他任务。












