硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4105|回复: 4
收起左侧

[ThreadX全家桶] 学习信号量和互斥信号量问题

[复制链接]

6

主题

19

回帖

37

积分

新手上路

积分
37
发表于 2020-11-12 15:09:20 | 显示全部楼层 |阅读模式
  1. <p style="line-height: 30px; text-indent: 2em;">void  Thread_SerialRecv_entry (ULONG thread_input)
  2. {
  3.     UINT status;        
  4.     (void)thread_input;</p>
  5. <p style="line-height: 30px; text-indent: 2em;">    status = tx_mutex_create(&mutex_serialrx,"mutex serialrx",TX_INHERIT);
  6.     if(TX_SUCCESS != status){}
  7.         
  8.     while(1)
  9.     {
  10.         status = tx_mutex_get(&mutex_serialrx,TX_WAIT_FOREVER);
  11.         if(status == TX_SUCCESS)
  12.        {
  13.             printf("Hello\r\n");
  14.        }
  15.        //tx_thread_sleep(1000);
  16.      }
  17. }</p><p style="line-height: 30px; text-indent: 2em;">注释掉tx_thread_sleep(1000),程序会卡死在这个任务里。</p><p style="line-height: 30px; text-indent: 2em;">取消注释tx_thread_sleep(1000);<span style="text-indent: 2em;">会一直printf,然而并没有</span>tx_mutex_get互斥信号量。</p><p style="line-height: 30px; text-indent: 2em;">
  18. </p><p style="line-height: 30px; text-indent: 2em;">单片机使用的是h750。请问大家,是不是还有什么需要配置的地方?</p>
复制代码

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2020-11-12 15:19:38 | 显示全部楼层

需要麻烦楼主重新编辑下代码,Dizcuz论坛添加的代码不支持在内部设置颜色

特别注意一点,互斥信号量一定要在一个任务里面成对调用,不可以作为通用信号量那样用于消息同步。
回复

使用道具 举报

6

主题

19

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2020-11-12 15:31:59 | 显示全部楼层
  1. void&#160;&#160;Thread_SerialRecv_entry (ULONG thread_input)
  2. {
  3. &#160; &#160; UINT status;&#160; &#160;&#160; &#160;&#160;&#160;
  4. &#160; &#160; (void)thread_input;</p>
  5.     status = tx_mutex_create(&mutex_serialrx,"mutex serialrx",TX_INHERIT);
  6. &#160; &#160; if(TX_SUCCESS != status){
  7.         
  8.     }
  9. &#160; &#160;&#160; &#160;&#160;&#160;
  10. &#160; &#160; while(1)
  11. &#160; &#160; {
  12. &#160; &#160;&#160; &#160;&#160;&#160;status = tx_mutex_get(&mutex_serialrx,TX_WAIT_FOREVER);
  13. &#160; &#160;&#160; &#160;&#160;&#160;if(status == TX_SUCCESS)
  14. &#160; &#160;&#160; &#160; {
  15. &#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;printf("Hello\r\n");
  16. &#160; &#160;&#160; &#160; }
  17. &#160; &#160;&#160; &#160; //tx_thread_sleep(1000);
  18. &#160; &#160;&#160;&#160;}
  19. }
  20. /*
  21. 注释掉tx_thread_sleep(1000),程序会卡死在这个任务里。
  22. 取消注释tx_thread_sleep(1000);会一直printf,然而并没有tx_mutex_get互斥信号量。单片机使用的是h750。请问大家,是不是还有什么需要配置的地方?
  23. */
复制代码
回复

使用道具 举报

6

主题

19

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2020-11-12 15:48:24 | 显示全部楼层
eric2013 发表于 2020-11-12 15:19
需要麻烦楼主重新编辑下代码,Dizcuz论坛添加的代码不支持在内部设置颜色

特别注意一点,互斥信号量一 ...

使用环境:串口中断接收数据,然后通知任务处理数据。
我知道了,用信号量就可以了,互斥信号了不能用在中断里。感谢硬汉
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2020-11-12 17:20:58 | 显示全部楼层
炮灰向前冲 发表于 2020-11-12 15:48
使用环境:串口中断接收数据,然后通知任务处理数据。
我知道了,用信号量就可以了,互斥信号了不能用在 ...

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-19 23:38 , Processed in 0.209399 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表