OpenEdv-开源电子网

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

如何精确限定f_write连续写的间隔时间

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-5-18
在线时间
0 小时
发表于 2015-5-18 12:10:19 | 显示全部楼层 |阅读模式
5金钱
原子亲,我遇到的问题时将ADC采集的数据写入SD卡中,采集间隔为1ms,一次采集数字只有4个字节,我想精确控制每次写入的时间间隔,于是就在f_write后面加延时,通过对IO口观察时间间隔。
结果,在正常写入N(N<50)个周期后,就会出现IO口的值会保持不变,说明f_write可能卡住了。看几个ms后又进入正常写,在写入一定数量后,f_write又会卡住一次,请问这是为什么呢?
我的代码是:
void Data_Collect_Mode(void){ 
 //DWORD c_fptr=fil.fptr;
 //u16 data_cnt=DATA_SAMPLE_MAXNUM;
 Get_Filename();
  f_open(&fil,filename,FA_WRITE|FA_READ|FA_OPEN_ALWAYS);   
 data_num_infil=0;
 //while(data_cnt<DATA_SAMPLE_MAXNUM){
 while(1){
  if(KEY_Scan(1)==KEY0_PRES) break;
  My_ADC_GetData_1Point4Channel();  
  Data_Store(adc_data._Byte0);
  Data_Store(adc_data._Byte1);
  Data_Store(adc_data._Byte2);
  Data_Store(adc_data._Byte3); 
  data_num_infil++;
  //delay_us(DATA_SAMPLE_INTERVAL);
  Bout(9)=~PBout(9);
 }
 LCD_ShowString(5,140,200,12,12,"data cellecting over!"); 
 delay_ms(100);
 f_close(&fil);
}

void Data_Store(u16 data){
 u32 bw;
 char data_string[6]="     ";
 char s[5];
 sprintf(s,"%u",data);
 if(data<10)
  data_string[3]=s[0];
 else if(data<100){
  data_string[2]=s[0];
  data_string[3]=s[1];
 }else if(data<1000){
  data_string[1]=s[0];
  data_string[2]=s[1];
  data_string[3]=s[2];
 }else{
  data_string[0]=s[0];
  data_string[1]=s[1];
  data_string[2]=s[2];
  data_string[3]=s[3];
 } 
 //printf("data=%d s=%s data_string=%s\n",data,s,data_string);
 f_write(&fil,data_string,5,&bw);
 delay_ms(10);
 //f_sync(&fil);
 //f_printf(&fil,"%s ",data);
}

main函数中调用Data_Collect_Mode(),通过观察PB9发现时序是这样的:


最佳答案

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-18 12:10:20 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-5-18
在线时间
0 小时
 楼主| 发表于 2015-5-19 08:18:20 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢~
回复

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2016-7-25
在线时间
29 小时
发表于 2019-12-5 14:28:10 | 显示全部楼层
同样遇到f_write卡住的问题,请问楼主怎么解决的呀?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 11:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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