ESP8266反复重启问题:Fatal exception 9

ESP8266反复重启问题:Fatal exception 9:

  • 根据打印信息,提示是字节对齐原因导致:
    在这里插入图片描述

  • 进一步定位到导致重启的代码是:spi_flash_read(Sector_VERIFY_INFO*4096,(uint32 *)&VerifyTest1, 32); 这个向flash读数据导致。

  • 这个函数唯一可能引起重启的就是u8类型的变量VerifyTest1,这个变量是用来保存读取的flash的值,这个变量是定义的全局变量,而且是强制转换成uint32型,那和字节对齐的原因就是强制转换后不能4字节对齐,输出变量VerifyTest1的地址是在这里插入图片描述

  • 变量VerifyTest1地址并没有4字节对齐,而且这个地址是随机的,多次编译调试发现如果某个时候编译出来的地址刚好是4字节对齐,那么就不会出现反复重启的问题。

  • 那么导致重启的原因会不会就是因为变量地址强制转换后不能4字节对齐所致呢,又怎么能让定义的变量能4字节对齐呢,我想到了结构体,我把变量VerifyTest1放在能够4字节对齐的结构体里,可以使变量始终保持4字节对齐。
    在这里插入图片描述在这里插入图片描述

  • 再进行编译,变量地址为ESP8266_Auth_Cmd_Data = 3ffef75c,4字节对齐了,模块也不重启了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值