完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问下,当使用API 函数 OSSemPost()会引发任务调度吗?在原子哥的同时等待多个内核对象的实验中发现当发送信号量时并没有立即引发任务调度,而是在延时函数发生调度的,记得刚开始的时候原子哥讲过 OSSemPost()是会引发任务调度,请问这个怎么解释?
void task1_task(void *p_arg) { u8 key; OS_ERR err; u8 num; u8 *pbuf; static u8 msg_num; pbuf=mymalloc(SRAMIN,10); //申请内存 while(1) { key = KEY_Scan(0); //扫描按键 switch(key) { case KEY1_PRES: OSSemPost(&Test_Sem1,OS_OPT_POST_1,&err);//发送信号量1 break; case KEY0_PRES: OSSemPost(&Test_Sem2,OS_OPT_POST_1,&err);//发送信号量2 //break ; case WKUP_PRES: msg_num++; sprintf((char*)pbuf,"ALIENTEK %d",msg_num); //发送消息 OSQPost((OS_Q* )&Test_Q, (void* )pbuf, (OS_MSG_SIZE)10, (OS_OPT )OS_OPT_POST_FIFO, (OS_ERR* )&err); break; } num++; if(num==50) { num=0; LED0=~LED0; } OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err); //延时10ms } } //等待多个内核对象的任务函数 void multi_task(void *p_arg) { u8 num; OS_ERR err; OS_OBJ_QTY index; OS_PEND_DATA pend_multi_tbl[CORE_OBJ_NUM]; pend_multi_tbl[0].PendObjPtr=(OS_PEND_OBJ*)&Test_Sem1; pend_multi_tbl[1].PendObjPtr=(OS_PEND_OBJ*)&Test_Sem2; pend_multi_tbl[2].PendObjPtr=(OS_PEND_OBJ*)&Test_Q; while(1) { index=OSPendMulti((OS_PEND_DATA* )pend_multi_tbl, (OS_OBJ_QTY )CORE_OBJ_NUM, //内核数量 (OS_TICK )0, (OS_OPT )OS_OPT_PEND_BLOCKING, (OS_ERR* )&err); LCD_ShowNum(147,111,index,1,16); //显示当前有几个内核对象准备好了 num++; LCD_Fill(6,131,233,313,lcd_discolor[num%14]); //刷屏 LED1 = ~LED1; OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_PERIODIC,&err); //延时1s } } |
|
相关推荐
3个回答
|
|
有任务调度的,只是等待信号量任务的优先级没有发送信号量的任务优先级高。
|
|
|
|
进入函数 OSSemPost里面看一下有没有调用任务切换函数,如果没有的话就不会引起任务调度
|
|
|
|
谢谢!,明白了
|
|
|
|
只有小组成员才能发言,加入小组>>
516 浏览 0 评论
1035 浏览 1 评论
2417 浏览 5 评论
2738 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2555 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
590浏览 9评论
590浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
701浏览 6评论
570浏览 5评论
608浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-5 00:03 , Processed in 1.260371 second(s), Total 83, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号