本帖最后由 xiao1231411 于 2015-4-24 16:02 编辑
if(erasure_flag==1)
{
Recbuff=0;
SPI_FLASH_BulkErase(0x40000); //此地方只是清除了 第五块的数据
SPI_FLASH_BulkErase(0x50000); //此地方只是清除了 第六块数据
SPI_FLASH_BulkErase(0x60000); //此地方只是清除了 第七块数据
FLASH_WriteAddress=0x40000;
erasure_flag=0;
USB_Send_Data("2",1);
}
每次我通过串口发送几遍都跑飞了,但是把前面四行注释掉
SPI_FLASH_BulkErase(0x40000); //此地方只是清除了 第五块的数据
SPI_FLASH_BulkErase(0x50000); //此地方只是清除了 第六块数据
SPI_FLASH_BulkErase(0x60000); //此地方只是清除了 第七块数据
FLASH_WriteAddress=0x40000;
程序就正常了。
下面是发送函数:
u32 count_in;
void USB_Send_Data(u8* data_buffer,u32 len)
{
count_in =len;
UserToPMABufferCopy(data_buffer, ENDP1_TXADDR, count_in);
SetEPTxCount(ENDP1, count_in);
SetEPTxValid(ENDP1);
}
我的猜想是,当flash还没擦除完就被USB中断给抢断了?各位大神怎么解决?要是关闭USB中断怎么关掉了,我用的是官方库,里面太复杂了看不懂,有人知道吗? |