中级会员
 
- 积分
- 412
- 金钱
- 412
- 注册时间
- 2015-10-22
- 在线时间
- 95 小时
|
1金钱
我设置一个按钮中断,每次按按钮都可以新建一个文件,然后在这个文件中写数据,
不中断新建文件,并写入数据可以实现了。每次按钮中断,新建一个文件也可以实现了,但是放在一起,按下按钮只有一个新建的文件,文件内没有写入数据
贴一下按钮中断函数
[mw_shl_code=applescript,true]void EXTI0_IRQHandler(void)
{
delay_ms(10); //消抖
if(KEY0==0) //PC0按键
{
do
{
sprintf((char*)pch,"0:%d.txt",inum++);
if(inum>500)inum=0;
res1 = f_open(file,(char*)pch, FA_CREATE_NEW | FA_WRITE);
res1=f_close(file); //关闭打开的文件
printf("创建文件");
}while(res1!=FR_OK);
while(1)
{
if(t!=calendar.sec)
{
t=calendar.sec;
USART2->DR='w';
if(USART2_RX_STA&0X8000)//串口2收到数据了
{
//Show_Str(0,0,240,16,"串口收到数据了",16,0);
rxlen=USART2_RX_STA&0x7FFF; //得到数据长度
write_buf=mymalloc(SRAMIN,FILE_MAX_SIZE); //申请FILE_MAX_SIZE字节的空间
for(i=0;i<rxlen;i++)
{
write_buf=USART2_RX_BUF;
}
pname=mymalloc(SRAMIN,FILE_MAX_SIZE); //申请FILE_MAX_SIZE字节的空间
f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE);
res1=f_lseek(file,file->fsize);//移动文件指针
sprintf((char*)pname,"%02d:%02d:%02d",calendar.hour,calendar.min,calendar.sec);
//sprintf(s, "%.*s%.*s", strlen((const TCHAR*)pname), pname, rxlen, write_buf);
res1=f_write(file,(const TCHAR*)pname,strlen((const TCHAR*)pname),&br);//向文件内写入时间
printf("%d:%d:%d\r\n",calendar.hour,calendar.min,calendar.sec);
printf("%d\r\n",calendar.sec);
res1=f_write(file,write_buf,rxlen,&br);//向文件内写入数据
printf("输入数据\r\n");
//res=f_write(file,s,sizeof(s),&br);
res1=f_write(file,huiche, sizeof(huiche),&br);//向文件内写入换行
res1=f_close(file); //关闭打开的文件
myfree(SRAMIN,pname);
myfree(SRAMIN,write_buf);
USART2_RX_STA=0; //启动下一次接收
}
}
}
EXTI->PR=1<<0; //清除LINE0上的中断标志位
}
}[/mw_shl_code]
在串口调试助手中显示已经执行了向txt中写数据的操作
但是打开txt文件里面并没有数据。是哪里出错了,想了半天了也没搞清楚哪里出了问题
|
最佳答案
查看完整内容[请看2#楼]
哈哈,
你应该看看f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE);的返回结果,应该是错的,根本没有这个文件;
sprintf((char*)pch,"0:%d.txt",inum++);
res1 = f_open(file,(char*)pch, FA_CREATE_NEW | FA_WRITE);
f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE);
仔细看看,你后面打开的文件是你前面创建的吗?
|