完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在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 里的就会出现错误啊? |
|
相关推荐
5个回答
|
|
一个的话就只能接收一个消息,如果你POST的消息没有其他地方PEND,那么计数就不会减少。这样再POST的就会失败。你可以打印你的消息队列在post和pend处理前后计数的值出来看看。
|
|
|
|
我在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就不会出现这个错误码了,不知道为什么 |
|
|
|
|
|
|
|
消息队列设置的1,除了DCMI中断没别的任务发消息了,我改过消息队列大小,没有用,
|
|
|
|
3q,我看看,
|
|
|
|
只有小组成员才能发言,加入小组>>
807 浏览 0 评论
1159 浏览 1 评论
2534 浏览 5 评论
2867 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2717 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1097浏览 3评论
197浏览 2评论
463浏览 2评论
376浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
458浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 17:07 , Processed in 1.453125 second(s), Total 86, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号