我想进入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循环,是跟这个冲突吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
用了你的例程测试了一下,也不行,这次是卡在 f_mount(0, &fatfs);里面。
一周热门 更多>