硬汉嵌入式论坛

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

[FreeRTOS] freertos中在中断中使用消息队列接收不到数据?

[复制链接]

28

主题

73

回帖

162

积分

初级会员

积分
162
发表于 2017-4-19 10:01:23 | 显示全部楼层 |阅读模式
这是中断程序:
u8 V1alueToSend;//发送变量
    BaseType_t x1HigherPriorityTaskWoken = pdFALSE;
  /*接收中断处理*/
  if(USART_GetITStatus(DVR_UART, USART_IT_RXNE) != RESET)
  {
    //取出数据,同时也是清除中断标记
        USART_ITConfig(DVR_UART,USART_IT_RXNE,DISABLE);
        V1alueToSend=DVR_UART->SR;
        V1alueToSend=DVR_UART->DR;
        USART_ITConfig(DVR_UART,USART_IT_TC,ENABLE);
    xQueueSendFromISR(DVR_Usart,&V1alueToSend,&x1HigherPriorityTaskWoken);//发送到队尾的数据
        USART_ITConfig(DVR_UART,USART_IT_TC,DISABLE);
        USART_ITConfig(DVR_UART,USART_IT_RXNE,ENABLE);
  }

这是接收程序:
     u8 x4received;
  portBASE_TYPE x4Status;
  pvParameters = pvParameters;
x4Status=xQueueReceive(DVR_Usart,&x4received,2);  
if(x4Status==pdPASS)     [sub][/sub][sup][/sup][strike][/strike]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107064
QQ
发表于 2017-4-19 10:07:35 | 显示全部楼层
先确定中断里面接收到数据没有。

另外中断里面发送完毕消息队列后,根据x1HigherPriorityTaskWoken数据使能任务切换。
回复

使用道具 举报

28

主题

73

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2017-4-19 10:08:38 | 显示全部楼层
如何使能任务切换呢
回复

使用道具 举报

28

主题

73

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2017-4-19 10:16:20 | 显示全部楼层

回 eric2013 的帖子

eric2013:先确定中断里面接收到数据没有。

另外中断里面发送完毕消息队列后,根据x1HigherPriorityTaskWoken数据使能任务切换。 (2017-04-19 10:07)
刚看了,程序近中断了,也执行到发送消息队列这一步了,但是就是接受不到数据?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107064
QQ
发表于 2017-4-19 10:37:06 | 显示全部楼层

回 月霜寒 的帖子

月霜寒:刚看了,程序近中断了,也执行到发送消息队列这一步了,但是就是接受不到数据?
 (2017-04-19 10:16) 
先找个简单定时器中断测试你的程序能够给你的这个任务发送中断消息不,先把这个事情确认了
回复

使用道具 举报

28

主题

73

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2017-4-19 10:40:32 | 显示全部楼层

回 eric2013 的帖子

eric2013:先找个简单定时器中断测试你的程序能够给你的这个任务发送中断消息不,先把这个事情确认了 (2017-04-19 10:37)
我刚才一步一步调试,看到程序进入中断,并且执行了接受数据和发送消息队列这一步,然后也执行了任务中接受消息队列这一步,但是就是那个判断“pdPASS”过不去,不知道为什么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107064
QQ
发表于 2017-4-19 10:44:22 | 显示全部楼层

回 月霜寒 的帖子

月霜寒:我刚才一步一步调试,看到程序进入中断,并且执行了接受数据和发送消息队列这一步,然后也执行了任务中接受消息队列这一步,但是就是那个判断“pdPASS”过不去,不知道为什么? (2017-04-19 10:40)
帮不上了。不知道你的程序怎么回事。
回复

使用道具 举报

28

主题

73

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2017-4-19 10:45:57 | 显示全部楼层

回 eric2013 的帖子

eric2013:帮不上了。不知道你的程序怎么回事。
(2017-04-19 10:44)
谢谢,我再看看
回复

使用道具 举报

28

主题

73

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2017-4-19 14:33:57 | 显示全部楼层

回 eric2013 的帖子

eric2013:帮不上了。不知道你的程序怎么回事。
(2017-04-19 10:44)
我现在换成二值信号量,使用全局变量传递数据就可以正常执行了。
还有一个问题想要请教,就是我使用IAR调试的时候,想看队列的信息,但是调出来提示我要将configQUEUE_REGISTRY_SIZE参数配置成不为0的数,但是我已经设置为10了,这是为什么呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 09:22 , Processed in 0.293334 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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