|
本帖最后由 hbchf 于 2013-5-7 16:57 编辑
先上代码:- void StartTask(void)
- {
- OS_ERR err;
- Param_init();
- SysTickInit();
-
- //定义信号量 -有卡标识
- OSSemCreate( (OS_SEM *)&Cardflage,
- (CPU_CHAR *)"detection card ok",
- (OS_SEM_CTR)1,
- (OS_ERR *)err);[/align]
-
- OSTaskCreate( (OS_TCB *)&LCD_TCB,
- (CPU_CHAR *)"LCD_task",
- (OS_TASK_PTR)LCDTCB,
- (void *)0,
- (OS_PRIO )LCD_PRIO,
- (CPU_STK *)&LCD_stk[0],
- (CPU_STK_SIZE)LCD_STK_SIZE / 10,
- (CPU_STK_SIZE)LCD_STK_SIZE,
- (OS_MSG_QTY )0,
- (OS_TICK )0,
- (void *)0,
- (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
- (OS_ERR *)&err);
-
- OSTaskCreate( (OS_TCB *)&DecteCard_TCB,
- (CPU_CHAR *)"user card task",
- (OS_TASK_PTR)Task_DecteCard,
- (void *)0,
- (OS_PRIO ) DecteCard_PRIO,
- (CPU_STK *)&DecteCard_stk[0],
- (CPU_STK_SIZE)DecteCard_STK_SIZE / 10,
- (CPU_STK_SIZE)DecteCard_STK_SIZE,
- (OS_MSG_QTY)0,
- (OS_TICK )0,
- (void *)0,
- (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
- (OS_ERR *)&err);
-
- OSTaskCreate( (OS_TCB *)&AntennaTCB, //定时复位天线
- (CPU_CHAR *)"turn on/off antenna",
- (OS_TASK_PTR)Task_on_off_antenna,
- (void *)0,
- (OS_PRIO )Antenna_PRIO,
- (CPU_STK *)&Antenna_stk[0],
- (CPU_STK_SIZE)Antenna_STK_SIZE / 10,
- (CPU_STK_SIZE)Antenna_STK_SIZE,
- (OS_MSG_QTY)0,
- (OS_TICK )0,
- (void *)0,
- (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
- (OS_ERR *)&err);
-
- //删除任务
- OSTaskDel( (OS_TCB *)&taskStartTCB,
- (OS_ERR *)&err);
-
-
- }
复制代码- static void Task_on_off_antenna(void *p_arg)
- {
- OS_ERR err;
- static uchar m ;
- static uchar ch,n =0;
- static uchar buf[10];
- while (1)
- {
- OSTimeDlyHMSM(0,0,0,5,OS_OPT_TIME_HMSM_STRICT,&err);
- FM1715_CloseRF();
- OSTimeDlyHMSM(0,0,0,5,OS_OPT_TIME_HMSM_STRICT,&err);
- FM1715_OpenRF();
- OSTimeDlyHMSM(0,0,0,100,OS_OPT_TIME_HMSM_STRICT,&err);
- memset(buf,0,sizeof(buf));
- ch = mcml_request(buf);
- if(ch == FM1715_OK)
- {
- OSSemPost(&Cardflage,
- OS_OPT_POST_ALL,
- &err);
- n = 2;
- m = n ;
- }
-
- }
- }
- static void Task_DecteCard(void *p_arg)
- {
- OS_ERR err;
- CPU_TS ts;
- static uchar n,m = 0;
-
- while (1)
- {
- OSSemPend(&Cardflage,
- 0,
- OS_OPT_PEND_BLOCKING,
- &ts,
- &err);
- n = m++;
-
- }
- }
复制代码 在单步调试的过程中,程序进入到了函数Task_on_off_antenna中的OSSemPost执行完后;任务Task_DecteCard一直挂着怎么就进不了这个任务了?新手上路多多指教! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|