最近用STM32FRBT6做了一个产品,有本地升级代码和远程升级代码两种方式,产品已经正常使用,但中间出了一个问题,一直没找到原因,后来用其他方法解决。
硬件连接:USART1 接PC 升级接口。
USART2 接 GPRS
USART3 接 GPS
进入升级程序,只打开USART1中断,接收数据并更新FLASH,一切正常。但只要升级过程中USART2或者USART3有数据到来,升级就会失败,失败原因是写进去Flash的数据和读出来的不一致。已经测试了几个方法,把USART2和3的端口配置为输出,使用__disable_irq在接收完数据包后关闭中断再编程闪存,仍然不行。最后没办法就在升级的时候关闭两个模块的电源,问题就解决了。一直不明原因,坛子里面有没有碰到类似情况,请指点一下。 |