完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
求助,各位大哥,小弟在下面的程序里申请了两个任务,其中一个还是开始任务,在另外一个任务中使用函数OSMboxPost()给消息邮箱发送数(已用红色标出),按道理来说,应该返回0的,但是我调试的时候发现他返回的是1,忘各位大哥指点迷津,小弟感激不尽,同时我发现在原子哥的关于消息邮箱的例程中,只要屏蔽串口中断函数,也会发生这样的情况, 求原子哥帮忙看看,程序已贴出,谢谢大家了!
#define start_prio 0 #define start_stk_size 1024 OS_STK start_task_stk[start_stk_size]; void start_task(void *pdata); #define scankey_prio 7 #define scankey_stk_size 1024 OS_STK scankey_task_stk[scankey_stk_size]; void scankey_task(void *pdata); OS_EVENT* msgkey; //邮箱指针 int main() { SystemInit(); Systick_Config(360000); OSInit(); msgkey=OSMboxCreate((void*)0); //创建消息邮箱 OSTaskCreate(start_task, (void *)0, (OS_STK *)&start_task_stk[start_stk_size-1], start_prio); OSStart(); } void scankey_task(void *pdata) { u8 key; u8 err=2; char str[30]={0}; while(1) { key=2; err = OSMboxPost(msgkey,&key);//给消息邮箱发送数据,此处的返回值err为什么等于1,不是应该等于0 的吗? if(err==0) { OSTimeDlyHMSM(0, 0, 0, 5); } err=3; OSMboxPend(msgkey, 10, &err); if(err==0) { OSTimeDlyHMSM(0, 0, 0, 5); } err=4; OSTimeDlyHMSM(0, 0, 0, 5); } } void start_task(void *pdata) { OS_CPU_SR cpu_sr=0; pdata = pdata; OSStatInit(); OS_ENTER_CRITICAL(); OSTaskCreate(scankey_task, (void *)0, (OS_STK*)&scankey_task_stk[scankey_stk_size], scankey_prio); OSTaskSuspend(start_prio); OS_EXIT_CRITICAL(); OSTimeDlyHMSM(0, 0, 0, 5); } |
|
相关推荐
1个回答
|
|
方针追踪一个OSMboxPost,看到底是什么情况返回的!!!
|
|
|
|
只有小组成员才能发言,加入小组>>
695 浏览 0 评论
1106 浏览 1 评论
2473 浏览 5 评论
2808 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2646 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
654浏览 9评论
650浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
782浏览 6评论
629浏览 5评论
669浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 15:13 , Processed in 1.014199 second(s), Total 49, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号