问题还是没有解决,代码如下:
[mw_shl_code=c,true]
[mw_shl_code=c,true]void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
Data_Buffer[0]=1;
Data_Buffer[1]=2;
Data_Buffer[2]=3;
Data_Buffer[3]=4;
Data_Buffer[4]=5;
Data_Buffer[5]=6;
Data_Buffer[6]=7;
Data_Buffer[7]=8;
Data_Buffer[8]=9;
SPI_Flash_Write(Data_Buffer,FLASH_SAVE_ADDR,9);
FLASH_SAVE_ADDR+=9;
DATA_Quantity++;
}
}
}[/mw_shl_code]
[/mw_shl_code]
读取代码如下:
[mw_shl_code=c,true]FLASH_SAVE_ADDR=0;
for(Q=0;Q<DATA_Quantity;Q++)
{
SPI_Flash_Read(datatemp_D,FLASH_SAVE_ADDR,9); //从0地址处开始,读出9个字节
for(i=0;i<9;i++)
{
//发送数据
USART_SendData(USART1,datatemp_D);
while((USART1->SR&0X40)==0);
}
FLASH_SAVE_ADDR+=9;
}[/mw_shl_code]
这样写入和读取,读取后数据大于148组就就会有一部分乱码
但是,如果用这个函数写入:
SPI_Flash_Write_NoCheck
读取就没有乱码
但是有另一个问题,就是用SPI_Flash_Write_NoCheck写入的数据读取出来偶尔会有一组FF FF FF FF FF FF FF FF FF出现,之前说过了,我写入的数据是9个字节一组。并且每次写入后,读取出来的一组9个FF的位置都是不固定的,甚至有的一组里的FF不够9个。
这又是什么原因啊?我已经快疯了!
求原子哥耐心指教!!!!!!
|