野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4659|回复: 7

[freertos] FreeRTOS同等优先级线程,一个发送信号量,一个线程信号量,但是接收会失败

[复制链接]
发表于 2019-9-28 22:55:04 | 显示全部楼层 |阅读模式
freertos,任务Send_Task和任务Receive1_Task优先级一样,Send_Task每3秒发送一次信号量,Receive1_Task一直等待信号量释放,但是信号量需要发送好多次才能接收到一次,这是为什么?#define configUSE_TIME_SLICING  1   时间片是开启了的。有大神知道是为什么吗?
发送线程
static void Send_Task(void *parameter)
{
    BaseType_t err = pdPASS;

    while(1)
    {
        err = xSemaphoreGive(sem);
        if(err == pdTRUE)
        {
            printf("send give sem success\r\n");
        }
        vTaskDelay(3000);
    }
}
接收线程

static void Receive1_Task(void *parameter)
{
    BaseType_t err = pdTRUE;
   
    while(1)
    {
        printf("receive 1 running\r\n");
        err = xSemaphoreTake(sem, portMAX_DELAY);
        if(err == pdTRUE)
        {
            printf("receive1 get sem success\r\n");
        }
    }
}
日志log打印


回复

使用道具 举报

发表于 2019-9-29 08:45:52 | 显示全部楼层
等待信号量时间设置成无限等待试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 09:40:20 | 显示全部楼层
要努力不要命 发表于 2019-9-29 08:45
等待信号量时间设置成无限等待试试

portMAX_DELAY应该就是无限时间等待了吧
回复 支持 反对

使用道具 举报

发表于 2019-9-29 09:46:56 | 显示全部楼层
是好多次发送成功 才能接收一次吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 10:01:51 | 显示全部楼层
wwhh 发表于 2019-9-29 09:46
是好多次发送成功 才能接收一次吗?

是的,log图片不知道为什么没有显示,有时候发送19次接收一次,或者发送32次接收一次,不固定,你遇到过这个问题吗?我测试了rt-thread,没有这个问题。
回复 支持 反对

使用道具 举报

发表于 2019-9-29 10:17:24 | 显示全部楼层
淘气 发表于 2019-9-29 10:01
是的,log图片不知道为什么没有显示,有时候发送19次接收一次,或者发送32次接收一次,不固定,你遇到过 ...

没有遇到过  我一般用的是RT-Thread  很少用freertos
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 10:24:19 | 显示全部楼层
wwhh 发表于 2019-9-29 10:17
没有遇到过  我一般用的是RT-Thread  很少用freertos

主要都想玩玩,都熟悉一下。rt-thread例程跑完了,现在再跑freertos。主要很奇怪,按理说这种情况不会出现,不知道是什么机制造成的。
回复 支持 反对

使用道具 举报

发表于 2020-1-17 11:37:21 | 显示全部楼层
除了发送线程接收线程,还有其它任务吗?

    你的发送线程3秒执行一次,会不会你的发送和接收线程的优先级太低(发送和接收任务的优先级相同),导致接收线程被其它任务抢占CPU,接收线程被饿死啦!

       建议:不用线程,而使用任务
                 发送任务的优先级低于接收任务的优先级
                 
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 18:28 , Processed in 0.049498 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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