RTOS的延时 是基于最小时间片TICK的,一个TICK设置为1MS,
那么RTOS的API延时函数最小延时单位就是1MS
如果想要更小的延时比如US级别的,那就需要自己写定时器的函数,也可以是用FOR()函数,但是FOR函数是部准确的,
特别是在RTOS中,因为你完全部不知道函数执行到哪里就被其他任务调度
所以,建议还是用定时器做延时,这个比较准确
看你系统的tick设定,一般都是主频/1000,得到的是ms级,你可以/1000000,变成us级。
可以的,一般10ms比较好,1ms都太浪费了,任务还没执行多少就切换其他任务了,效率太低了,
不过1ms还是行的
操作系统里的延时一般都是用节拍
建议不要随便改,以免用到其它部件时不兼容。
如果您其它代码需要精确延时,比如软件IIC,建议使用定时器。
一般 RTOS 的心跳频率是 1000hz,所以一次心跳是 1ms,这个是系统调度的最小时间片
如果采用比较大的延时,比如 50ms,或者以上,对延时没有严格要求的情况,可以采用 RTOS 提供的延时函数。
如果是对延时要求比较严格,精准延时, ms 级别延时或者小于 ms 级别延时,最好还是用硬件 timer 实现。因为 RTOS 的系统的延时不够精准,这是由 RTOS 决定的,用户也改善不了。
一般的是10ms,是可以修改成1ms的,
要是再小,要看看看RTOS系统的任务调度的最小时间是多少了,如果小于这个值,可能会跑飞程序的