我懂LZ的意思了,在RT-Thread里没有提供像ucosii中OSRunning
那样的运行状态标志,可以参考我之前的一个提问:
https://club.rt-thread.org/ask/question/865e418ffec00a96.html
😏但是~
但是来了,内核里是有一个API可以判断系统跑起来了的,这个API就是:
该函数会返回当前运行的线程指针,如果不为空就代表调度器已启动,在源码里搜一下就会明白了。
看 RTT 的启动流程。执行 rtthread_startup()
函数的时候,最开始调用 rt_hw_board_init()
,在板子的硬件初始化的时候最开始就初始化了内存,时钟,嘀嗒计时器和串口设备。最后执行到 rt_system_scheduler_start()
函数的时候就启动了调度器,之后调度器就会一直运行。
其实我觉得这个API有点小疑惑:ISR中获取时也会有中断之前的结果。
感谢回复,我确实是这个意思,要的就是这个API,谢谢老哥
@aozima 确实如此,毕竟只在调度器初始化时赋值
RT_NULL
,而在进出中断时保持之前的值没有清零,在线程切换时才会改变当前值。其实我现在的方法是在main函数加个标记,因为main函数被执行时,调度器肯定打开了,这时候标记被设置了就表示启动了
@谭卓琳 客气啦,条条大路通罗马,哈哈哈😄