今天在 探索者STM32F4 开发板上做了下 串口IAP实验,XOM下载 RTC.bin Flash APP,发送文件XCOM显示多条
用户程序接收完成!
代码长度:xxxxxBytes
Key_UP键转存bin提示错误
Illegal FLASH APP!
Bus Hound监控全程通讯,发送的是bin原文,没做任何协议,看代码板子接收串口数据直接保存在 USART_RX_BUF数组里;
问题就出在main()的while(1)第一段接收超时判断里,这个猪循环只简单的延时delay_ms(10);
并没有在对接收同步计时做处理,未解决这个超时判断错误问题,做如下修改,增加循环多次后再判断超时;
if(USART_RX_CNT)
{
rt++;
if(oldcount==USART_RX_CNT&&rt>=4)//新周期内,没有收到任何数据,认为本次数据接收完成.
{
applenth=USART_RX_CNT;
oldcount=0;
USART_RX_CNT=0;
printf("用户程序接收完成!
");
printf("代码长度:%dBytes
",applenth);
}
else
{
if(oldcount!=USART_RX_CNT)
{
rt=0;
oldcount=USART_RX_CNT;
}
}
}
编译下载,测试一举成功。 |