中级会员
 
- 积分
- 375
- 金钱
- 375
- 注册时间
- 2015-9-15
- 在线时间
- 98 小时
|
3金钱
在做关于串口接收的数据放入外部flash当中,串口中断当中每接收到4k数据,就设置标志位,在主函数中写入。
我写入的文件有6k,先写4k,剩下的再写。程序如下,[mw_shl_code=c,true]if(flag_usart)
{
flag_usart=0;
W25QXX_Write(USART_BUF,q*4096,4096);
q++;
}
if(w)
{
if(w==old)
{
lenth=w;
lenth1=lenth+q*4096;
printf("3¤¶èÎa%d\r\n",lenth1);
W25QXX_Write(USART_BUF,q*4096,lenth);
old=0;
q=0;
w=0;
flag_update=1;
}
else
old=w;
}
delay_ms(3);
if(flag_update)
{
flag_update=0;
W25QXX_Read(Buff1,0,100);
for(i=0;i<100;i++)
{
printf("%x\r\n",Buff1);
}
}[/mw_shl_code]
下面是中断函数[mw_shl_code=c,true]if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
USART_BUF[w] =USART_ReceiveData(USART1);
w++;
}
if(w==4096)
{
w=0;
flag_usart=1;
}[/mw_shl_code]。
问题来了!我在读flash的时候,为什么读出来的是4k地址,开始的100个字节数据??并不是从地址0 开始的数据
|
最佳答案
查看完整内容[请看2#楼]
要么全部接收完了再写,要么N个一组一组的写。定义2个N个长度的数组,1个专门接收数据,接收完N个后复制进入另外一个数组,写数据的时候写另外一个数组的数据。不要随便加printf ;这个函数要时间的
|