初级会员 
  
	- 积分
 - 74
 
        - 金钱
 - 74 
 
       - 注册时间
 - 2018-7-10
 
      - 在线时间
 - 17 小时
 
 
 
 | 
 
8金钱 
我有两个问题: 
1、我的工程起了8个任务,优先级编号从4-11.目前来看,编号为9的和11的任务都能启动,然而标号为10的任务却无法启动。任务11是个空任务: 
 
void camera_task(void *p_arg) 
{  
 OS_ERR err; 
 p_arg = p_arg; 
  
 while(1) 
 {   
  DEBUG("camera_task START\r\n"); 
  OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //ÑÓʱ500ms 
  DEBUG("camera_task END\r\n"); 
 } 
} 
 
任务9是看门狗喂狗和定时向485口发送数据: 
void check_task(void *p_arg) 
{ 
 OS_ERR err; 
 p_arg = p_arg; 
  
 while(1) 
 { 
  DEBUG("check_task START\r\n"); 
  TX485_1(); 
  TX485_2(); 
  TX485_3();  
   
/*   
  //µÈ´ýʼþ±êÖ¾×é 
  OSFlagPend((OS_FLAG_GRP*)&EventFlags, 
       (OS_FLAGS )GPS_FLAG | TCP_FLAG, 
           (OS_TICK     )0, 
       (OS_OPT     )OS_OPT_PEND_FLAG_SET_ALL+OS_OPT_PEND_FLAG_CONSUME, 
       (CPU_TS*     )0, 
       (OS_ERR*     )&err); 
  DEBUG("GPS|TCP valid\r\n"); 
*/ 
  IWDG_Feed();  //ι¹· 
  DEBUG("check_task END\r\n"); 
  OSTimeDlyHMSM(0,0,0,500, OS_OPT_TIME_HMSM_STRICT,&err); //ÑÓʱ500ms 
 } 
} 
 
没有启动的任务10,主要是用了个消息队列接受数据并处理,消息队列的用法应该没错,因为别的任务也起了2-3个消息队列都能执行: 
//labelÈÎÎñº¯Êý 
void label_task(void *p_arg) 
{ 
 u8 i, *pMsg; 
 OS_ERR err; 
 OS_MSG_SIZE size; 
 p_arg = p_arg; 
  
 while(1) 
 {     
  DEBUG("label_task START\r\n"); 
  pMsg = OSQPend((OS_Q* )&LABEL_Msg,    
      (OS_TICK  )0, 
                  (OS_OPT  )OS_OPT_PEND_BLOCKING, 
                  (OS_MSG_SIZE* )&size,  
                  (CPU_TS*  )0, 
                  (OS_ERR*  )&err);  
   
  if(pMsg != (void *)0) 
  { 
   for(i = 0; i < size; i++) 
   { 
    if(pMsg[i] == 'A') 
    { 
     memcpy(Label_ID, pMsg+i, 7); 
     label_error = 0x0; 
     labelerr_times = 0x0; 
      
     memset(USART3_RX_BUF, 0, USART3_REC_LEN); 
     break; 
    }            
   } 
   if(i == size) 
   { 
    labelerr_times++; 
    if(labelerr_times == 3) 
    { 
     label_error = 0x1; //ÒѾ­ÖÃ1£¬Èç¹û²»½Ó±êÇ©£¬±ê־λ»¹ÊÇ1 
     labelerr_times = 0x0; 
    } 
     
    memset(USART3_RX_BUF, 0, USART3_REC_LEN); 
    DEBUG("LABELÊý¾ÝÎÞЧ\r\n"); 
   } 
  } 
  else 
  { 
   memset(USART3_RX_BUF, 0, USART3_REC_LEN); 
   DEBUG("LABELÊý¾ÝÓÐÎó\r\n"); 
  } 
   
  DEBUG("label_task END\r\n"); 
  OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err); //ÑÓʱ1s 
 } 
} 
 
请问下大家遇到这种情况怎么调试?  有什么注意事项! 
 
2、我现在调试也会遇到进入HardFault的地方,请问怎么调试?我看网上的方法感觉不好用啊?请大家赐教 
 
 |   
 
 
 
 
 
 |