完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
芯片:STM32G0B1RCT6 256KB,双BANK Flash。
1.HAL_FLASH_Unlock()调用,返回OK。 2.HAL_FLASHEx_Erase(); 返回OK 3.HAL_FLASH_Program(FLASH_TYPEPROGRAM_FAST, address, FlashWrite[0]); 第3步中,使用FASH模式进行写入,返回Hardfault. 其中地址定义的是:0x0800F800,FLASH中的最后1个page,写入前通过IAR View Memory可以看到即将写入的地址已经完全被清成0xFF了。 FlashWrite[]定义的是一个size为32的,成员是64bit的数组。 调用第3步写入函数就会发生hardfault,查了很多资料没有找到原因,求指导 |
|
相关推荐
1个回答
|
|
在这种情况下,STM32G0 Flash快速写入发生HardFault的原因可能有以下几点:
1. **地址对齐问题**:确保写入地址和数据都是按照要求对齐的。对于STM32G0,快速写入要求地址和数据都是64位对齐。检查FlashWrite数组的地址是否满足64位对齐。 2. **写入数据大小问题**:在STM32G0中,快速写入模式一次最多可以写入32个字(128字节)。请确保FlashWrite数组的大小不超过这个限制。 3. **Flash区域问题**:虽然你已经解锁了Flash并擦除了指定的区域,但请确保你正在写入的区域是可写的。STM32G0具有双BANK Flash,确保你正在写入的BANK是可写的。 4. **写入速度问题**:STM32G0的快速写入模式要求在写入过程中不要有其他中断或DMA操作。确保在写入过程中没有其他中断或DMA操作干扰。 5. **硬件问题**:如果以上原因都排除了,可能是硬件问题。检查STM32G0芯片和开发板是否有损坏或连接问题。 6. **软件问题**:检查HAL库的版本是否与你的STM32G0芯片兼容。如果不兼容,尝试升级或降级HAL库。 7. **调试问题**:使用调试器检查在发生HardFault时的寄存器状态,以获取更多关于错误的信息。检查MSP、PSP、Main Stack等寄存器的值,以确定问题所在。 综上所述,要解决这个问题,你需要逐步检查以上可能的原因,并根据具体情况进行调整。希望这些信息能帮助你找到问题的根源并解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1602 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1536 浏览 1 评论
967 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
680 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1579 浏览 2 评论
1860浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
640浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
513浏览 3评论
527浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
500浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 09:25 , Processed in 0.576120 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号