完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
实现效果:
定时1接收信号量、刷新LED, 任务1扫描按键、发送信号量; 创建:软件定时器1,Task1,消息对象KEY_Msg; 问题: 软件定时中查询信号量 err == OS_ERR_PEND_WOULD_BLOCK; 是不是软件定时中断中不能使用信号量,或者是,我使用方法不对?请高手指点,谢谢! //------------------------------------------------------------------- //-------------------------------启动开始任务------------------------- //------------------------------------------------------------------- #define START_TASK_PRIO 3 //任务优先级 #define START_STK_SIZE 64 //任务堆栈大小 OS_TCB StartTaskTCB; //任务控制块 CPU_STK START_TASK_STK[START_STK_SIZE]; //任务堆栈 void start_task(void *p_arg); //任务函数 //------------------------------------------------------------------- //-------------------------------任务1------------------------------ //------------------------------------------------------------------- #define TASK1_TASK_PRIO 4 //任务优先级 #define TASK1_STK_SIZE 64 //任务堆栈大小 OS_TCB Task1_TaskTCB; //任务控制块 CPU_STK TASK1_TASK_STK[TASK1_STK_SIZE]; //任务堆栈 void task1_task(void *p_arg); //任务函数 //------------------------------------------------------------------- //-------------------------------软件定时---------------------------- //------------------------------------------------------------------- OS_TMR tmr1; //定时器1 void tmr1_callback(void *p_tmr, void *p_arg); //定时器1回调函数 //------------------------------------------------------------------- //-------------------------------信号量------------------------------- //------------------------------------------------------------------- OS_SEM MY_SEM; //定义一个信号量,用于访问共享资源 //定时器1的回调函数 void tmr1_callback(void *p_tmr,void *p_arg) { OS_ERR err; OSSemPend(&MY_SEM,0,OS_OPT_PEND_BLOCKING,0,&err); //请求信号量 if(PAout(1)==1) PAout(1)=0; else PAout(1)=1; } //任务1的任务函数 void task1_task(void *p_arg) { OS_ERR err; u8 key; key = KEY_Scan(0); //扫描按键 if(key==WKUP_PRES) { OSSemPost(&MY_SEM,OS_OPT_POST_ALL,&err);//发送信号量 } OStimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err); //延时10ms } |
|
相关推荐
1个回答
|
|
问题解决了 软件定时在系统里属于中断,不能做请求信号量。
|
|
|
|
只有小组成员才能发言,加入小组>>
663 浏览 0 评论
1083 浏览 1 评论
2456 浏览 5 评论
2784 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2619 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
640浏览 9评论
637浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
767浏览 6评论
611浏览 5评论
652浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 17:03 , Processed in 0.821882 second(s), Total 47, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号