STM32/STM8技术william hill官网
直播中

李明

7年用户 1299经验值
私信 关注
[问答]

uart4与内部flash操作出现冲突

我要实现wifi远程升级功能,因此会用串口控制wifi模块,并且会执行内部flash的擦写。整个工程都是仿照IAP的示例写的,网上很多,就不多说了。第一次测试的时候wifi使用的USART2,无任何问题。等真正制版的时候换成了UART4接口,就出问题了。
     首先UART4本身是没问题的,串口和wifi模块都验证过了,但执行原来的远程升级程序是,先初始化UART4,再执行flash操作,执行到IAP_Init()->IAP_FlashErase()->HAL_FLASH_Unlock()函数就会出现异常,程序跳转到.s文件的这里,死掉

                B      

                 ENDP

                 ALIGN
先执行flash操作,再执行UART4,不知道在哪里跳转的,最后还是会死到上边说的那里。这还仅仅是初始化,没有真正运行升级过程呢。换回UASRT2无任何问题,检查好多遍,看不出什么问题。实在搞不懂,来求教一下


回帖(2)

李丽

2018-10-17 15:29:31
检查其软件代码,发现其中对Flash上数据的更新操作分为如下几个步骤:

1. 保存Flash页上的数到RAM中;

2. 擦除Flash页;

3. 修改RAM中的数据;

4. 将RAM中的数据写回Flash页上;

对照STM32的数据手册,查找到相关的数据:

1. 字写入时间 40uS ~ 70uS;

2. 页擦除时间40mS;

检查软件代码,找到对USART的设置:

1. 波特率115200BPS;

2. 帧格式为1 个起始位,8个数据位,2个停止位;

检查软件代码,发现其对USART的接收数据采用中断的方式进行读取
举报

李萍

2018-10-17 15:29:49
可能引发了系统异常,最好用仿真器跟踪定位问题
举报

更多回帖

发帖
×
20
完善资料,
赚取积分