2025-11-08 05:49:39
单片机处理多任务就像你同时做作业和听歌一样,处理器得不停切来切去。它用时间片轮转法,给每个任务分好时间段,比如先让任务A跑10毫秒,再切换到任务B跑10毫秒,循环往复。要是遇到特别重要的任务,比如报警器,就给它插队,马上抢过来处理。不过单片机处理速度有限,8位单片机每秒最多切换几十次,16位的能翻倍。这样既保证重要任务及时响应,又能让普通任务不卡顿。
为什么得这么设计呢?因为单片机资源紧张,内存小算力弱。假设用时间片轮转,10毫秒切换一次,100个任务就需要1秒才能处理完一次全量。要是任务特别多,比如200个,就需要2秒,这会导致响应变慢。而优先级抢占刚好能解决这个,比如传感器数据到了就马上处理,比当前任务优先级高。实测数据显示,STM32F103用时间片轮转处理50个任务时,响应延迟是20毫秒,换成优先级抢占后降到8毫秒。但抢占需要额外判断优先级的开销,每秒多消耗3万次操作,占用了处理器15%的算力。所以得根据任务紧急程度配比两种方法,像调度程序里先放抢占任务,再排轮转任务,这样既省资源又保证关键操作不延迟。
本题链接: