中级会员
 
- 积分
- 268
- 金钱
- 268
- 注册时间
- 2017-12-12
- 在线时间
- 103 小时
|

楼主 |
发表于 2017-12-12 16:12:53
|
显示全部楼层
本帖最后由 YK山羊 于 2017-12-12 17:20 编辑
我发现我的错误了,就是串口中断处理函数的变量应该定义成static,导致每次进中断都给它清零了
void USART1_IRQHandler(void)
{
static u8 data[256]={0},i=0;
static u32 WriteAddress=0;
if ( USART_GetITStatus(USART1, USART_IT_RXNE) == SET && usart1->status == RECV_ING )
{
if(i < 255)
{
data = USART_ReceiveData(USART1);
i ++;
}
else //i=255,´®¿Ú·¢ËÍÀ´µÚ256¸öbyteʱÆô¶¯Ð´Èëflash
{
data = USART_ReceiveData(USART1);
i = 0;
SPI_FLASH_BufferWrite(data, WriteAddress, 256);
WriteAddress +=256;
if(WriteAddress > 216576)//×Ö¿â¹²216576 byte
{
usart1->status = RECV_DOWN;
}
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
}
}
} |
|