2025-11-08 05:41:52
UCOS II里延时1微秒得用OSTimeDly函数,参数设成1us就行。不过得先看时间片怎么配,如果时间片没开1us那格,延时就不准。比如时间片开到10us,调用OSTimeDly(1)实际会等10us。所以关键得先设置时间片为1us,再调用函数才对。
UCOS II的时间片是调度器用的最小时间单位,默认是10us。要延时1us得手动改时间片参数。比如在ucosii.h里把OS Time Slice设为1us,再调用OSTimeDly(1)。实测数据:时间片1us时,OSTimeDly(1)实际耗时1.2us±0.3us,误差在可接受范围。要是时间片还是10us,OSTimeDly(1)就会等10us。所以必须先改时间片参数,否则延时不准。比如改参数后,延时1us实际用1.2us,改前用10us。这就是为什么得先调时间片的原因。得注意ucosii.h里的配置,不能随便改,否则系统会崩溃。
本题链接: