野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10236|回复: 3

SD卡每次读完约512字节后进入中断?

[复制链接]
发表于 2017-6-21 17:13:16 | 显示全部楼层 |阅读模式
我调用了文件系统,在main函数里面先打开一个txt文件,读取6个字节并按照功能进行转换,之后就使能定时器1,想要每次进入定时器中断后都从txt读取6个字节,并转换,通过SPI发送出去。但是发现每次读取一定数据后定时器中断进不了,因为我有片选线拉低和拉高,所以用示波器看到进过多次拉低和拉高的脉冲后,就没法进入了(此时txt并没有读完)。可能是什么原因呢?

main函数部分是这样的(已打开txt)
                                               usart4.printf("HAD OPEN\r\n");
                                                file_len = f_size(&file);
                                                usart4.printf("size: %d\r\n",file_len);
                                                f_read(&file,read_buffer,6,&counter);
        
                                                ASC2char(read_buffer);
                                                usart4.printf("start ADC\r\n");
                                                TIM1_Configuration();
                                                while(1)
                                                {}

定时器中断是这样的

void TIM1_UP_TIM10_IRQHandler(void)
{
if ( TIM_GetITStatus( TIM1, TIM_IT_Update) != RESET )
        {        
        TIM_ClearITPendingBit(TIM1 , TIM_IT_Update);
               
                SPI1_CS_OFF;
               
                send_data(dac_buffer[0]);
                send_data(dac_buffer[1]);
                send_data(dac_buffer[2]);
                SPI1_CS_ON;
               
                y++;
                if(y<(file_len/6))
                {
                f_read(&file,read_buffer,6,&counter);
                ASC2char(read_buffer);
                }
               
                else
                {
                        
                        f_lseek(&file,0);
               f_read(&file,read_buffer,6,&counter);
                   ASC2char(read_buffer);
                        y=0;
                }
               
        }
               
               
               
}        

每次进入中断拉低和拉高片选

每次进入中断拉低和拉高片选

进入几十次中断后进不了中断,被什么懂事屏蔽中断了

进入几十次中断后进不了中断,被什么懂事屏蔽中断了
回复

使用道具 举报

发表于 2017-6-22 08:54:45 | 显示全部楼层
不要在中断里读文件,各种嵌套可能有错误,一般就在中断写个标志位,主循环里检测标志位然后处理
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-22 11:59:50 | 显示全部楼层
flyleaf 发表于 2017-6-22 08:54
不要在中断里读文件,各种嵌套可能有错误,一般就在中断写个标志位,主循环里检测标志位然后处理

按照您的指示,改成了在main函数中检测中断标志位,在main函数中进行处理,每次检测到状态位置一,就执行语句,拉低,再拉高片选,但是用示波器检测还会看到每次读取512字节后会进入近500us的时间无法定时拉低拉高片选,这会是哪里的原因呢?

按照您的说法不进入中断,而是在mian函数检测

按照您的说法不进入中断,而是在mian函数检测

读取512字节后还是有近500us进不了定时器中断

读取512字节后还是有近500us进不了定时器中断
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-22 12:02:23 | 显示全部楼层
flyleaf 发表于 2017-6-22 08:54
不要在中断里读文件,各种嵌套可能有错误,一般就在中断写个标志位,主循环里检测标志位然后处理

这是示波器图片

每次会有近500us无法拉低拉高片选

每次会有近500us无法拉低拉高片选
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-3-28 19:23 , Processed in 0.030123 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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