在中断中无法执行U盘写入

2019-07-20 22:39发布

我想进入DMA中断后进行U盘数据写入工作,但是执行到if(open)语句之后就会跑飞,跟踪语句后发现其在msc_fatfs.c文件卡死,如图;void   DMA2_Stream0_IRQHandler(void){
                 FATFS fatfs;
                FIL file;  //Îļt¶ÔÏó
                FRESULT res;
        if(DMA_GetITStatus(DMA2_Stream0,DMA_IT_TCIF0)!=RESET)
                {
                        DMA_ClearITPendingBit(DMA2_Stream0,DMA_IT_TCIF0);/*??????*/
                       
                        for(i=0;i<=18;i++)
{
                 temp[i]=(float)adcx[i]*3.3/4096;
}
sprintf(a,"%f",temp[0]);

    f_mount(0, &fatfs);

    if(f_open(&file, "0:STM32.TXT",FA_OPEN_ALWAYS | FA_WRITE) == FR_OK)
    {

                                bytesWritten=file.fsize;
                                f_lseek(&file,bytesWritten);
      bytesToWrite = sizeof(a);
      res= f_write (&file, a, bytesToWrite, (void *)&bytesWritten);   
      f_close(&file);
      f_mount(0, NULL);
        }
}
请问是为啥?
user_app里的程序还是一直在while循环,是跟这个冲突吗?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。