工具与软件:
大家好!
我正在片上 OAD 示例上进行开发、创建了一个新任务和一个队列。
static void *DataStream_Task(void *arg)
{
for (;;)
{
DataStream_appEvt_t pAppEvt;
if (mq_receive(DataStream_theardEntity.queueHandle, (char*)&pAppEvt, sizeof(pAppEvt), NULL) > 0)
{
}
}
}
static bStatus_t DataStream_createQueue(void)
{
struct mq_attr attr;
attr.mq_flags = 0;
attr.mq_curmsgs = 0;
attr.mq_maxmsg = 8;
attr.mq_msgsize = sizeof(DataStream_appEvt_t);
/* Create the message queue */
DataStream_theardEntity.queueHandle = mq_open("DataStream_theardQueue", O_CREAT , 0, &attr);
if (DataStream_theardEntity.queueHandle == (mqd_t)-1)
{
return FAILURE;
}
return SUCCESS;
}
Status_t DataStream_enqueueMsg(uint8_t event, void *pData)
{
int8_t status = SUCCESS;
DataStream_appEvt_t msg;
// Check if the queue is valid
if (DataStream_theardEntity.queueHandle == (mqd_t)-1)
{
return FAILURE;
}
msg.event = event;
msg.pData = pData;
// Send the msg to the application queue
status = mq_send(DataStream_theardEntity.queueHandle,(char*)&msg,sizeof(msg),1);
return status;
}
int DataStream_createTask(void)
{
int retVal = 0;
pthread_attr_t param_attribute;
struct sched_param param;
retVal = pthread_attr_init(¶m_attribute);
param.sched_priority = 1;
retVal |= pthread_attr_setschedparam(¶m_attribute, ¶m);
retVal |= pthread_attr_setstack(¶m_attribute, dataStreamTaskStack, 1024);
retVal |= pthread_attr_setdetachstate(¶m_attribute, PTHREAD_CREATE_DETACHED);
retVal |= pthread_create(&DataStream_theardEntity.threadId,
¶m_attribute,
&DataStream_Task,
NULL);
return retVal;
}
在调试期间、它被清空、然后我发现堆栈使用窗口中有许多黄色项目。 我从未修改过的一些项目、导致此问题的原因、以及如何修复它并保留我的代码。


