完善资料让更多小伙伴认识你,还能领取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,看到底是什么情况返回的!!!
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1089 浏览 1 评论
1907 浏览 0 评论
1885 浏览 1 评论
3307 浏览 5 评论
3631 浏览 9 评论
1092浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1411浏览 1评论
1909浏览 0评论
1225浏览 0评论
1361浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-17 17:08 , Processed in 0.788406 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1666