OpenEdv-开源电子网

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

【新手求助】STM32+SD卡+Fatfs 打开文件第一次成功,再次就总是失败

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-12-26
在线时间
0 小时
发表于 2015-1-13 15:39:33 | 显示全部楼层 |阅读模式
5金钱
使用了ALIENTEK MiniSTM32 扩展实验26 ATK-RM04 WIFI模块测试实验
test.txt中的内容通过wifi发送出去
第一次按键 串口检测发送正确,但是wifi接收不到 如下
readedi:0
fptr:32
br:32
data:Oh,fuck it.Konw something?
You
readedi:1
fptr:64
br:32
data:are just like the little girls a
readedi:2
fptr:96
br:32
data:nd everybody else.
You wanna li
readedi:3
fptr:128
br:32
data:ve inside some fairy tale.
I am
readedi:4
fptr:160
br:32
data: just trying to make things bett

第二次按键 检测到总是在输出最后一次的内容,但是wifi能够接收到这次的内容  如下:
readedi:0
fptr:0
br:0
data: just trying to make things bett
readedi:1
fptr:0
br:0
data: just trying to make things bett
readedi:2
fptr:0
br:0
data: just trying to make things bett
readedi:3
fptr:0
br:0
data: just trying to make things bett
readedi:4
fptr:0
br:0
data: just trying to make things bett

下面是我写的代码,恳请指正
[mw_shl_code=c,true]#include "common.h" #include "ff.h" /////////////////////////////////////////////////////////////////////////////////////////////////////////// //±????ò???©?§?°??????????×÷???í???????????????ü???????? //ALIENTEK STM32??·?°? //ATK-RM04 WIFI???é ?®???????¨COM-WIFI AP?©?????ú?? //??????×?@ALIENTEK //????????:www.openedv.com //????????:2013/10/12 //°?±???V1.0 //°??¨?ù??????°?±????? //Copyright(C) ?????????í??×????????????? 2009-2019 //All rights reserved /////////////////////////////////////////////////////////////////////////////////////////////////////////// //ATK-RM04 WIFI AP???? //????????TCP/UDP???? //·?????:0,???? // ????,?í?ó?ú?? u8 atk_rm04_wifiap_test(void) { u16 br; u16 bw; FIL fp; FIL fil; u8 *databuf; u16 LengthOfBuf=32; u16 i=0; u8 netpro=0; //???????? u8 key; u8 timex=0; u8 ipbuf[16]; //IP???? u8 *p; u16 t=999; //??????????????????×??? u8 res=0; u16 rlen=0; u8 constate=0; //????×??? databuf=mymalloc(SRAMIN,LengthOfBuf+1); p=mymalloc(SRAMIN,32); //?ê??32×??????? atk_rm04_send_cmd("at+netmode=3","ok",500); //?è??WIFI AP???? atk_rm04_send_cmd("at+dhcpd=1","ok",500); //DHCP·????÷????(??AP???????§,?????·???÷?????????§) atk_rm04_send_cmd("at+dhcpc=0","ok",500); //DHCP???§??????(net_ip???§) //?è??DHCP IP???··??§,???°×???????????????,??°?????±?. //?????è??DHCP·??§:192.168.16.100~192.168.16.200,??????:192.168.16.1 atk_rm04_send_cmd("at+dhcpd_ip=192.168.16.100,192.168.16.200,255.255.255.0,192.168.16.1","ok",500); atk_rm04_send_cmd("at+dhcpd_dns=192.168.16.1,0.0.0.0","ok",500);//DHCP·????÷DNS?è?? //????IP?è??.?è?????é??????IP???·.×??????????°??????. //?????è?????é???????·??:192.168.16.254,×????????????????°?????ù atk_rm04_send_cmd("at+net_ip=192.168.16.254,255.255.255.0,192.168.16.1","ok",500); atk_rm04_send_cmd("at+net_dns=192.168.16.1,0.0.0.0","ok",500);//?è??DNS?è?? //WIFI AP???????é??????WIFI????????/????·???/????,???????????????ù???ú×??????è??????????!! sprintf((char*)p,"at+wifi_conf=%s,%s,%s",wifiap_ssid,wifiap_encryption,wifiap_password);//?è??????????:ssid,????·???,???? atk_rm04_send_cmd(p,"ok",500); //???????????? PRESTA: netpro=atk_rm04_netpro_sel(50,30,(u8*)ATK_RM04_NETMODE_TBL[3]); //???????????? if(netpro&0X02)atk_rm04_send_cmd("at+remotepro=udp","ok",500); //UDP???é else atk_rm04_send_cmd("at+remotepro=tcp","ok",500); //TCP???é sprintf((char*)p,"at+remoteport=%s",portnum); atk_rm04_send_cmd(p,"ok",500); //?è?? ??????. if(netpro&0X01) //???§?? { if(atk_rm04_ip_set("WIFI-AP ????IP?è??",(u8*)ATK_RM04_WORKMODE_TBL[netpro],(u8*)portnum,ipbuf))goto PRESTA; //IP???? sprintf((char*)p,"at+remoteip=%s",ipbuf); atk_rm04_send_cmd(p,"ok",500); //?è??????(????)IP???·. atk_rm04_send_cmd("at+mode=client","ok",500); //?è???????§?? }else atk_rm04_send_cmd("at+mode=server","ok",500); //?è????·????? LCD_Clear(WHITE); POINT_COLOR=RED; Show_Str_Mid(0,30,"ATK-RM04 WIFI-AP ????",16,240); Show_Str(30,50,200,16,"????????ATK-RM04???é,??????...",12,0); if(atk_rm04_send_cmd("at+net_commit=1","\r\n",4000))//?á??????????,×??¤?????è??????40s { LCD_Fill(30,50,239,50+12,WHITE); //?????®?°?????? Show_Str(30,50,200,16,"????ATK-RM04???é?§°?!",12,0); delay_ms(800); res=1; }else { atk_rm04_send_cmd("at+reconn=1","ok",500); //?????®??×???·??? LCD_Fill(30,50,239,50+12,WHITE);//?????®?°?????? Show_Str(30,50,200,16,"????ATK-RM04???é????!",12,0); Show_Str(30,50,200,16,"WK_UP:???????? KEY0:·???????",12,0); while((netpro&0X01)==0)//·????÷???? { atk_rm04_quit_trans(); //???????? atk_rm04_get_wanip(ipbuf); //????WAN IP if(ipbuf[0])break; } sprintf((char*)p,"IP???·:%s ????:%s",ipbuf,(u8*)portnum); Show_Str(30,65,200,12,p,12,0); //????IP???·?????? Show_Str(30,80,200,12,"×???:",12,0); //????×??? Show_Str(120,80,200,12,"????:",12,0); //????×??? Show_Str(30,100,200,12,"·???????:",12,0); //·??????? Show_Str(30,115,200,12,"????????:",12,0); //???????? atk_rm04_wificonf_show(30,180,"ATK-RM04???é????????:",(u8*)wifiap_ssid,(u8*)wifiap_encryption,(u8*)wifiap_password); POINT_COLOR=BLUE; Show_Str(120+30,80,200,12,(u8*)ATK_RM04_WORKMODE_TBL[netpro],12,0); //????×??? USART2_RX_STA=0; while(1) { key=KEY_Scan(); if(key==3) //WK_UP ???????? { res=0; break; }else if(key==1) //KEY0 ·??????? { while(1) { ROPEN: f_open(&fp,(const TCHAR*)"0:test.txt",FA_READ|FA_OPEN_EXISTING); f_lseek(&fp,0); if(FR_OK == 0) { for(i=0;i*LengthOfBuf<(&fp)->fsize;i++) { f_lseek(&fp,i*LengthOfBuf); f_read(&fp,databuf,LengthOfBuf,(UINT*)&br); if(br<LengthOfBuf)//?????ê±??????? { databuf[br]='\0';//?í???á??·? f_lseek(&fp,0); Show_Str(30+54,100,200,12,databuf,12,0); printf("%s",databuf); u2_printf("%s",databuf); break; } else if(br==LengthOfBuf)//??·???±í512BYTES???????????? { databuf[LengthOfBuf]='\0';//?í???á??·? Show_Str(30+54,100,200,12,databuf,12,0); printf("%s",databuf); u2_printf("%s",databuf); } } } else {printf("%d",FR_OK); goto ROPEN; } break; } timex=100; } if(timex)timex--; if(timex==1)LCD_Fill(30+54,100,239,112,WHITE); t++; delay_ms(10); if(USART2_RX_STA&0X8000) //???????????????? { rlen=USART2_RX_STA&0X7FFF; //????±????????????????¤?? USART2_RX_BUF[rlen]=0; //?í???á??·? printf("%s",USART2_RX_BUF); //·??????®?? sprintf((char*)p,"????%d×???,????????",rlen);//????????×????? LCD_Fill(30+54,115,239,130,WHITE); POINT_COLOR=BRED; Show_Str(30+54,115,156,12,p,12,0); //?????????????????¤?? POINT_COLOR=BLUE; LCD_Fill(30,130,239,319,WHITE); Show_Str(30,130,180,190,USART2_RX_BUF,12,0);//???????????????? f_open(&fil,"0:receive.txt",FA_OPEN_ALWAYS|FA_WRITE);//???¨???? f_write(&fil,USART2_RX_BUF,rlen,(UINT*)&bw); f_close(&fil); USART2_RX_STA=0; if(constate==0)t=1000; //×?????????????,?????ü??????×??? else t=0; //×???????????????,10???ó???ì?é } if(t==1000)//????10????????????????????,?ì?é????????????????. { constate=atk_rm04_consta_check()-'0';//????????×??? if(constate)Show_Str(30+30,80,200,12,"????????",12,0); //????×??? else Show_Str(30+30,80,200,12,"?????§°?",12,0); t=0; } if((t%20)==0)LED0=!LED0; atk_rm04_at_response(1); } } myfree(SRAMIN,p); //??·????? atk_rm04_quit_trans(); //???????? return res; } [/mw_shl_code]


[mw_shl_code=c,true][/mw_shl_code]

wifiap.c

6.7 KB, 下载次数: 54

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

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-14 08:17:59 | 显示全部楼层
仿真看看结果,这样好分析
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 00:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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