完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用的芯片是STM32F765VGT6,内部flash大小是1M,配置为了dual bank模式,现在参照STM32F767ZI-Nucleo的flash擦写例程,对bank1可以正常擦写,bank2只能在整片擦除后才能写,无法对单个扇区进行擦除。找不到问题在哪里,求助一下大家。
相关代码如下: HAL_FLASH_Unlock(); HAL_FLASH_OB_Unlock(); FlashErasePage(ADDR_APP_DATA_PAGE1); FlashWriteByte(ADDR_USER_DATA_INIT_FLAG1,pData,USER_DATA_NUM); HAL_FLASH_OB_Lock(); HAL_FLASH_Lock(); uint32_t STMFLASH_GetFlashSector(u32 addr) { if(addr |
|
相关推荐
2个回答
|
|
你首先要通过选项配置为双bank模式,然后就可以操作了。我今天找了F769的开发板进行测试,没有问题。
我先擦除BANK2的12~16区,然后写入数据0x12345678在这些区。接着我又擦除了第13区重新写入数据为0xaa5588ff,结果一切正常。 你确认下地址给对没有,是否配置为双BANK区了。这里有参考例程 STM32Cube_FW_F7_V1.16.1ProjectsSTM32F769I-DiscoveryExamplesFLASHFLASH_EraseProgram可以参考下。 |
|
|
|
问题可能出在以下几个方面:
1. 检查是否正确解锁了Flash和Option bytes。在使用`HAL_FLASH_Unlock()`和`HAL_FLASH_OB_Unlock()`解锁Flash和Option bytes之后进行操作,确保在操作完之后再次使用`HAL_FLASH_OB_Lock()`和`HAL_FLASH_Lock()`锁定Flash和Option bytes。 2. 检查是否设置正确的扇区地址。在使用`FlashErasePage()`函数擦除扇区之前,确保传入的地址是要擦除的扇区地址,可以使用`STMFLASH_GetFlashSector()`函数确定传入地址所在的扇区。 3. 检查是否正确擦除了整片Flash。通常情况下,如果需要擦除某个扇区,可以先擦除整片Flash,然后再进行写入操作。使用`FLASH_Erase()`函数擦除整片Flash。 请尝试检查以上可能出现问题的地方,并更新代码以适应正确的操作流程。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1678 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1580 浏览 1 评论
1012 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1626 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
674浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
537浏览 3评论
556浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
525浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 11:41 , Processed in 0.763568 second(s), Total 49, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号