硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4034|回复: 4
收起左侧

[有问必答] 中断进程中无法写U盘

[复制链接]

12

主题

24

回帖

12

积分

新手上路

积分
12
QQ
发表于 2016-4-23 18:36:05 | 显示全部楼层 |阅读模式
我想进入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=(float)adcx*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);
        }
}
请问是为啥?
是不是因为中断进程内不能进行写U盘操作?

卡在这个.c

卡在这个.c
QQ图片20160423104148.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-4-24 00:42:45 | 显示全部楼层
切不可以在中断函数里面调用FatFS的API,这个是编程的大忌,太影响系统的实时性了,可以考虑实现DMA双缓冲功能,一个缓冲采集数据时,可以在中断外将另一个缓冲的数据写入U盘。
回复

使用道具 举报

12

主题

24

回帖

12

积分

新手上路

积分
12
QQ
 楼主| 发表于 2016-4-24 10:12:22 | 显示全部楼层

回 eric2013 的帖子

eric2013:切不可以在中断函数里面调用FatFS的API,这个是编程的大忌,太影响系统的实时性了,可以考虑实现DMA双缓冲功能,一个缓冲采集数据时,可以在中断外将另一个缓冲的数据写入U盘。 (2016-04-24 00:42) 
这样啊,我现在是想在中断中给一个标志位a=1;然后退出中断,外部函数就不停的判断。当a=1时开始写U盘,也就是不在中断里面写了,可以吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-4-24 12:52:00 | 显示全部楼层

回 mengheli 的帖子

mengheli:这样啊,我现在是想在中断中给一个标志位a=1;然后退出中断,外部函数就不停的判断。当a=1时开始写U盘,也就是不在中断里面写了,可以吗? (2016-04-24 10:12) 
可以的。
回复

使用道具 举报

12

主题

24

回帖

12

积分

新手上路

积分
12
QQ
 楼主| 发表于 2016-4-25 14:47:50 | 显示全部楼层

回 eric2013 的帖子

eric2013:可以的。 (2016-04-24 12:52) 
非常感谢,已经成功
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 01:59 , Processed in 0.043850 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表