在线时间6 小时
UID3085851
注册时间2014-12-22
NXP金币0
该用户从未签到
新手上路

- 积分
- 41
- 最后登录
- 2015-7-10
|
本帖最后由 xzjydyx 于 2014-12-22 19:39 编辑
采用K60+MQX4.1.1做的一个录音的实验,遇到如下问题:
录音的流程为通过K60的ADC采样,ADC采样得到的数据通过DMA存入到SD卡中,DAM存储的buffer大小为3200
目前在DMA中断中,设置了音频开始存储的事件标志位,程序如下
if(RecordState[0]!=VoiceIDLE)
{
taskevent = taskevent | RecordProcess0State;
_lwevent_set(&VoiceStorage_lwevent,taskevent);
}
在GPIO中断中,设置了开启ADC采样的事件标志位,程序如下
if(GPIO_PDIR_BIT(BSP_CTLIN_nREC1))
{
taskevent = taskevent & Event_Null;
taskevent = taskevent | RecordStart0State;
}
else
{
taskevent = taskevent & Event_Null;
taskevent = taskevent | RecordStop0State;
}
在storage_voice任务中,设置了等待事件标志位,程序如下
if(_lwevent_wait_ticks(&VoiceStorage_lwevent,taskevent,TRUE,0) != MQX_OK)
{
printf("storage error\r\n");
// _task_block();
}
else
{
……
}
程序在运行一段时间后,出现了问题,在开启ADC采样的标志位后,storage_voice任务无法执行,显示的状态为Lwevent Blocked,使得lwevent处于waitting状态,具体如图所示
MQX Task Summart
现在这种状态就是shell可以正常执行,但是storage_voice任务就无法执行了,请问大神们接下来该怎么解决!!!
|
|