初级会员
- 积分
- 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的地方,请问怎么调试?我看网上的方法感觉不好用啊?请大家赐教
|
|