F物的自我救赎(笑) 2023-05-25 21:35 采纳率: 73.8%
浏览 456
已结题

RTOS延时改为osDelay(1000);堵塞一秒后程序会直接卡死

请问一下为什么当我把延时改为osDelay(1000);堵塞一秒后程序会直接卡死呢

img

  • 写回答

2条回答 默认 最新

  • 瞬间动力 2023-05-26 00:29
    关注

    在RT-Thread中,osDelay()函数是一个阻塞当前线程的延时函数,其功能是让当前线程暂停指定时钟周期,用法如下:

    osDelay(uint32_t ms);
    

    其中,参数 ms 表示要暂停的时间,单位为毫秒。当调用 osDelay() 函数后,当前线程会被阻塞,直到延时结束。

    如果您的程序在调用了 osDelay() 后卡死,很有可能是因为主线程或者其他线程在等待某些资源或者处于死循环等待状态,导致被阻塞的线程无法被调度执行。

    您可以使用 RT-Thread 的调试功能来防止程序出现卡死情况。在代码中添加调试打印信息,观察程序运行到哪一步时出现异常,从而找到导致程序卡死的原因。

    有关在 RT-Thread 中使用调试功能的详细信息,请参阅 RT-Thread 官方文档。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月25日
  • 创建了问题 5月25日