OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4369|回复: 5

ucosiii 发送消息错误OS_ERR_INT_Q_FULL

[复制链接]

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-27
在线时间
23 小时
发表于 2016-8-15 12:38:41 | 显示全部楼层 |阅读模式
1金钱
在DCMI中断里给一个任务发送消息,大致逻辑如下
char *p = NULL;
p = malloc(2);
if (p != NULL)
{
     if (flag)
    {
        P = "1";
        OSTaskQPost(&TASK, P, 2, OS_OPT_POST_FIFI, &ERR)
    }
    else
    {
        P = "2"
        OSTaskQPost(&TASK, P, 2, OS_OPT_POST_FIFO, &ERR);
    }
}
free(p);
第一个可以发送出去消息,第二个就有错误,错误码是OS_ERR_INT_Q_FULL;
malloc和free函数是原子的历程,简写了,我在UCOSIII的书上找,没看到这个错误码,不知道是什么意思啊?为什么 if 里的语句能发消息,else 里的就会出现错误啊?

最佳答案

查看完整内容[请看2#楼]

一个的话就只能接收一个消息,如果你POST的消息没有其他地方PEND,那么计数就不会减少。这样再POST的就会失败。你可以打印你的消息队列在post和pend处理前后计数的值出来看看。
生死看淡,低头猛干
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-8-15 12:38:42 | 显示全部楼层
zzz 发表于 2016-8-15 15:45
消息队列设置的1,除了DCMI中断没别的任务发消息了,我改过消息队列大小,没有用,

一个的话就只能接收一个消息,如果你POST的消息没有其他地方PEND,那么计数就不会减少。这样再POST的就会失败。你可以打印你的消息队列在post和pend处理前后计数的值出来看看。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-27
在线时间
23 小时
 楼主| 发表于 2016-8-15 12:56:43 | 显示全部楼层
我在UCOS官网下载了一个UCOSIII-API REFERENCE文档,上面写
OS_ERR_INT_Q_FULL
If OS_CFG_ISR_POST_DEFERRED_EN is to DEF_ENABLED in os_cfg.h: If the deferred
interrupt post queue is full.

没看懂是啥意思,但是我把OS_CFG_ISR_POST_DEFERRED_EN 这个宏设置成0就不会出现这个错误码了,不知道为什么

生死看淡,低头猛干
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-8-15 15:19:22 | 显示全部楼层
你的消息队列设置是多少个?
这个应该是消息队列满了,如果你不能及时处理,消息队列可以设置大一点。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-27
在线时间
23 小时
 楼主| 发表于 2016-8-15 15:45:27 | 显示全部楼层
ysq7120 发表于 2016-8-15 15:19
你的消息队列设置是多少个?
这个应该是消息队列满了,如果你不能及时处理,消息队列可以设置大一点。

消息队列设置的1,除了DCMI中断没别的任务发消息了,我改过消息队列大小,没有用,
生死看淡,低头猛干
回复

使用道具 举报

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-27
在线时间
23 小时
 楼主| 发表于 2016-8-16 19:07:41 | 显示全部楼层
ysq7120 发表于 2016-8-15 15:53
一个的话就只能接收一个消息,如果你POST的消息没有其他地方PEND,那么计数就不会减少。这样再POST的就会 ...

3q,我看看,
生死看淡,低头猛干
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 20:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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