打印
[STM32L4]

uart4与内部flash操作怎么会冲突

[复制链接]
1035|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxrs|  楼主 | 2022-8-6 11:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实现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无任何问题,检查好多遍,看不出什么问题。

使用特权

评论回复
沙发
xxrs|  楼主 | 2022-8-6 11:41 | 只看该作者
可能引发了系统异常

使用特权

评论回复
板凳
heweibig| | 2022-8-6 11:44 | 只看该作者
最好用仿真器跟踪定位问题

使用特权

评论回复
地板
lizye| | 2022-8-6 11:46 | 只看该作者
先执行flash操作,再执行UART4,不知道在哪里跳转,那是哪里跳转了啊、、、

使用特权

评论回复
5
llljh| | 2022-8-6 11:49 | 只看该作者
系统异常有可能,可以重来一下试试

使用特权

评论回复
6
supernan| | 2022-8-6 11:53 | 只看该作者
注意下你所选芯片的确支持UART4

使用特权

评论回复
7
renyaq| | 2022-8-6 11:55 | 只看该作者
IAP_Init()->IAP_FlashErase()->HAL_FLASH_Unlock()

使用特权

评论回复
8
liliang9554| | 2022-8-6 11:58 | 只看该作者
注意启动文件的正确性

使用特权

评论回复
9
jlyuan| | 2022-8-6 12:02 | 只看该作者
建议UART4自己用寄存器操作初始化,避免库的干扰。

使用特权

评论回复
10
dingy| | 2022-8-6 12:05 | 只看该作者
当时地震了吧

使用特权

评论回复
11
heweibig| | 2022-8-6 12:07 | 只看该作者
内部冲突,没有遇到过

使用特权

评论回复
12
llljh| | 2022-8-6 12:10 | 只看该作者
说明芯片完整料号为宜
特别注意下启动文件、中断方面的问题

使用特权

评论回复
13
renyaq| | 2022-8-6 12:12 | 只看该作者
这种就直接用串口2吧。反正有个能用的,正所谓:避恶扬善,扬长避短。

使用特权

评论回复
14
xxrs|  楼主 | 2022-8-6 12:15 | 只看该作者
谢谢大家,找到原因了。是我把串口4的中断函数给写错了,UART4写成了USART4,结果中断找不到函数跑丢了。

使用特权

评论回复
15
zhaoxqi| | 2022-8-6 12:22 | 只看该作者
强行征用了存储空间?

使用特权

评论回复
16
heweibig| | 2022-8-6 12:25 | 只看该作者
没用过,远程不是WIFI吗

使用特权

评论回复
17
stly| | 2022-8-6 12:27 | 只看该作者
这个怎么会冲突呢 是不是碰巧操作一个地址去了啊

使用特权

评论回复
18
renyaq| | 2022-8-6 12:30 | 只看该作者
地址误操作吧

使用特权

评论回复
19
pengf| | 2022-8-6 12:32 | 只看该作者
UART4自己用寄存器操作初始化

使用特权

评论回复
20
xxrs|  楼主 | 2022-8-6 12:35 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

405

主题

7415

帖子

1

粉丝