OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1992|回复: 12

ADC+DMA+sd卡按键按下,f_close()没有反应

[复制链接]

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2023-6-19
在线时间
18 小时
发表于 2023-10-17 16:10:57 | 显示全部楼层 |阅读模式
1金钱
主函数使用f_open打开创建文件,ADC+DMA采集数据,DMA中断里面存储数据。我想用一个按键来控制何时关闭存储。但是不知道为什么,按键经常失效,按下去任何反应都没有,结果就是由于没有关闭文件,SD卡写入为空。求解

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2023-6-19
在线时间
18 小时
 楼主| 发表于 2023-10-17 19:37:09 | 显示全部楼层
本帖最后由 XJW123 于 2023-10-17 20:10 编辑

大家帮忙看一下,为什么按键按下,却没有反应。
        while(1)
        {       
                Key_Num = KEY_Scan(0);

               
                if(Key_Num == 3)
                {
                        s = f_close(&file_test);
                        printf("close = %d\r\n",s);       
                }               
        }        
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2023-6-19
在线时间
18 小时
 楼主| 发表于 2023-10-17 20:25:34 | 显示全部楼层
XJW123 发表于 2023-10-17 19:37
大家帮忙看一下,为什么按键按下,却没有反应。
        while(1)
        {       

按键按下去,连打印的返回值都没有,说明根本没进去
回复

使用道具 举报

11

主题

2130

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4724
金钱
4724
注册时间
2015-1-10
在线时间
590 小时
发表于 2023-10-19 09:03:12 | 显示全部楼层
你在中断里存数据是什么逻辑?为了存数据的时候屏蔽其他任务???
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2023-6-19
在线时间
18 小时
 楼主| 发表于 2023-10-19 20:01:42 | 显示全部楼层
阿侑kevin 发表于 2023-10-19 09:03
你在中断里存数据是什么逻辑?为了存数据的时候屏蔽其他任务???

中断里面就是f_write啊,我发现这个f_write是不是很费时间啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2023-10-19 21:52:53 | 显示全部楼层
XJW123 发表于 2023-10-19 20:01
中断里面就是f_write啊,我发现这个f_write是不是很费时间啊

不要中断里面用fatfs的相关函数
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2023-6-19
在线时间
18 小时
 楼主| 发表于 2023-10-20 13:51:20 | 显示全部楼层
正点原子 发表于 2023-10-19 21:52
不要中断里面用fatfs的相关函数

为啥,因为它很耗时间吗
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2023-6-19
在线时间
18 小时
 楼主| 发表于 2023-10-20 13:56:46 | 显示全部楼层
正点原子 发表于 2023-10-19 21:52
不要中断里面用fatfs的相关函数

那就在主函数里面吗,因为我要一直写入ADC的数据,在While()循环里面调用吗?麻烦大哥指点一下,因为在中断里面的效果确实不好
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2023-10-21 10:55:22 | 显示全部楼层
XJW123 发表于 2023-10-20 13:56
那就在主函数里面吗,因为我要一直写入ADC的数据,在While()循环里面调用吗?麻烦大哥指点一下,因为在中 ...

SD卡是要擦除再写入的 速度比较慢 中断里给出执行信号 在主函数根据信号工作 不然在中断写入过程中 其他按键操作都响应不了了
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2023-6-19
在线时间
18 小时
 楼主| 发表于 2023-10-21 14:49:33 | 显示全部楼层
babyrabbit 发表于 2023-10-21 10:55
SD卡是要擦除再写入的 速度比较慢 中断里给出执行信号 在主函数根据信号工作 不然在中断写入过程中 其他 ...

我是定时器触发ADC,ADC触发DMA,DMA中断里面往SD卡里面写入数据。2ms,我发现效率特别低,它2ms内好像写不完。我该怎么办,不放在中断里面写吗
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2023-10-22 10:29:25 | 显示全部楼层
XJW123 发表于 2023-10-21 14:49
我是定时器触发ADC,ADC触发DMA,DMA中断里面往SD卡里面写入数据。2ms,我发现效率特别低,它2ms内好像写 ...

DMA中断里写数据?2ms是啥 定时器溢出频率?
ADC的DMA传完了就该DMA往SD卡写入了
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2023-6-19
在线时间
18 小时
 楼主| 发表于 2023-10-23 10:57:26 | 显示全部楼层
babyrabbit 发表于 2023-10-22 10:29
DMA中断里写数据?2ms是啥 定时器溢出频率?
ADC的DMA传完了就该DMA往SD卡写入了

2ms就是ADC的触发频率,我用定时器触发adC
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2023-6-19
在线时间
18 小时
 楼主| 发表于 2023-10-23 19:17:20 | 显示全部楼层
大哥们,我想问一下,这个f_lseek()这个函数是干啥的,加不加有啥区别
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 12:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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