新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2018-11-15
- 在线时间
- 40 小时
|
楼主 |
发表于 2019-12-9 14:10:34
|
显示全部楼层
void msgdel_task(void *pvParameters)
{
u8 *sendbuffer;
u8 len=0;
BaseType_t err;
while(1)
{ //接收数据长度
err = xTaskNotifyWait((uint32_t ) 0x00, //进入函数的时候不清除任务BIT
(uint32_t ) ULONG_MAX, //推出任务时清除所有BIT
(uint32_t * ) &len, //保存任务通知值
(TickType_t ) portMAX_DELAY ); //等待通知信息时间
if(err==pdTRUE)
{
sendbuffer=pvPortMalloc(len); //申请空间
if(sendbuffer==NULL)
printf("申请内存失败!\r\n");
else
{
if(xQueueReceive( USART1_QUEUE, sendbuffer, portMAX_DELAY )!=pdTRUE)
printf("消息队列接受失败!\r\n");
printf("sendbuffer:%s\r\n",sendbuffer);
vPortFree(sendbuffer);
sendbuffer=NULL;
}
}
}
}
补了判断,没有提示申请失败,是我判断做错了吗?没有的话到底哪里出问题了
出错提示:
qwert //第一次发送
sendbuffer:qwert
qwerteryey //第二次发送
sendbuffer:qwerteryey
qwerteryeywetrwet //第三次出错
sendbuffer:?
Error:..\FreeRTOS\portable\MemMang\heap_4.c,320
Error:..\FreeRTOS\portable\MemMang\heap_4.c,321 |
|