是的, Systick 中断是为操作系统提供时基的, osdelay() 的时基来源于此. Systick 的中断优先级一般设置得比较低, 因为时基系统相对有较长的执行时间. 这样的设计可以避免 systick 影响其它中断的实时性.
你的问题是, 你的中断就不应该调用 osdelay(), 中断的任务保留必要的信号和状态变量, 然后交割主循环或者任务去做剩下的处理, 这里你可以做个处理任务去对接这个中断服务.
当然还有不推荐的办法, 你非得这样弄, 把调用 osdelay() 的中断的优先级设置得比 systick 更低. 为了追求最简练的系统, 这样做也不是非得要禁止, 但有个严重的副作用, 这个中断会影响其它所有任务的实时性! 因为这个中断服务就相对于超级优先级的任务了.
|