金牌会员
 
- 积分
- 2873
- 金钱
- 2873
- 注册时间
- 2020-4-30
- 在线时间
- 218 小时
|
2金钱
别人交接的代码,在跑的时候出现HardFault,如图
图中的函数
int8_t delete_item_to_queue_list(p_queue_cmd_buf_tcb ptr_queue_list_tcb) //删除队列中的一项消息
{
if(ptr_queue_list_tcb != NULL)
{
if(ptr_queue_list_tcb->queue_list_cur_len > 0) //当前消息队列长度大于0
{
free(ptr_queue_list_tcb->queue_list[ptr_queue_list_tcb->queue_list_tail].cmd_pbuf); //释放消息数据内存
ptr_queue_list_tcb->queue_list[ptr_queue_list_tcb->queue_list_tail].cmd_pbuf = NULL; //将当前指针清0
ptr_queue_list_tcb->queue_list[ptr_queue_list_tcb->queue_list_tail].cmd_dlen = 0x0; //长度清零
ptr_queue_list_tcb->queue_list_tail++; //释放队列空间
ptr_queue_list_tcb->queue_list_tail %= ptr_queue_list_tcb->queue_list_len;
ptr_queue_list_tcb->queue_list_cur_len--; //当前队列长度减1
}
else
{
return -1;
}
}
else
{
return -2;
}
return 0;
}
对应的结构体
typedef struct
{
uint8_t *cmd_pbuf;
uint16_t cmd_dlen;
}cmd_buf_t,*p_cmd_buf_t;
typedef struct
{
p_cmd_buf_t queue_list;
void (*handle)(const char *pbuf,uint16_t dlen);
volatile uint8_t queue_list_len;
volatile uint8_t queue_list_head;
volatile uint8_t queue_list_tail;
volatile uint8_t queue_list_running;
volatile uint8_t queue_list_cur_len;
volatile uint8_t queue_list_overflow;
}queue_cmd_buf_tcb, *p_queue_cmd_buf_tcb;
搞了几天都没有搞定,请各位大佬指点指点,感谢!!
|
|