gd32f103 RT_THREAD系统挂起和恢复线程,挂起可以,恢复不行

[复制链接]
 楼主| zeshoufx 发表于 2019-7-17 15:58 | 显示全部楼层 |阅读模式
本帖最后由 zeshoufx 于 2019-7-17 16:00 编辑

如题,想通过RTTHREAD系统建一个线程,然后将其挂起,延时一段时间后,在将该线程恢复,挂起成功,恢复时,发现一直被空闲线程占用,,恢复不了,有人懂吗



  1. /*
  2.    rtthread
  3. */

  4. #include "board.h"
  5. #include "rtthread.h"

  6. static rt_thread_t led1_thread=RT_NULL;

  7. //static rt_thread_t usart_thread=RT_NULL;


  8. static void led1_thread_entry(void *parameter);

  9. //static void usart_thread_entry(void *parameter);


  10. int main(void)
  11. {
  12.         led1_thread=rt_thread_create("led1",led1_thread_entry,RT_NULL,512,3,20);               
  13.         if(led1_thread!=RT_NULL)
  14.         {
  15.                 rt_thread_startup(led1_thread);
  16.         }
  17.         else
  18.         {
  19.                 return -1;
  20.         }        
  21.         
  22. }


  23. static void led1_thread_entry(void *parameter)
  24. {
  25.         rt_err_t uwret=RT_EOK,uwresum=RT_EOK;
  26.         while(1)
  27.         {
  28.                 led1=1;
  29.                 rt_thread_delay(500);
  30.                 rt_kprintf("led1_thread is running,LED1_ON\r\n");
  31.                
  32.                
  33.                 led1=0;
  34.                 rt_thread_delay(500);
  35.                 rt_kprintf("led1_thread is running,LED1_OFF\r\n");
  36.                
  37.                 rt_thread_delay(5000);
  38.                
  39.                 rt_kprintf("挂起LED1线程!\r\n");
  40.                 uwret=rt_thread_suspend(led1_thread);
  41.                 if(uwret==RT_EOK)
  42.                 {
  43.                         rt_kprintf("挂起LED1线程成功!\r\n");
  44.                 }
  45.                 else
  46.                 {
  47.                         rt_kprintf("挂起LED1线程失败!\r\n");
  48.                 }
  49.                
  50.                 rt_thread_delay(5000);

  51.                
  52.                 rt_kprintf("恢复LED1线程!\r\n");
  53.                 uwresum=rt_thread_resume(led1_thread);
  54.                 if(uwresum==RT_EOK)
  55.                 {
  56.                         rt_kprintf("恢复LED1线程成功!\r\n");
  57.                 }
  58.                 else
  59.                 {
  60.                         rt_kprintf("恢复LED1线程失败!\r\n");
  61.                 }
  62.                
  63.                 rt_thread_delay(5000);
  64.         }

  65. }        










209905d2ed59dc8f3f.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

1989

帖子

15

粉丝
快速回复 在线客服 返回列表 返回顶部

67

主题

1989

帖子

15

粉丝
快速回复 在线客服 返回列表 返回顶部