完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32g030f6p6 对flash快速编程时总是第一次可以正常的写,第二次写就失败,失败地方总在 HAL_FLASH_Program这条函数,这个地方卡了好几个星期了,现在请广大的坛友帮忙解决或者分享下经验。
下面时个人写的程序,字节对齐时没错了, HAL_StatusTypeDef sta=0; uint32_t end_addr; HAL_FLASH_Unlock(); if(init==FLASH_SAVE) flashAddr += FLASH_INDEX_SIZE; end_addr =flashAddr+write_num*FLASH_INDEX_SIZE; if(end_addr > g_my_flash.flash_end_addr || init==FLASH_ERASER)/*如果如果地址大于存储的结束地址 则把当前页面的数据擦除*/ { flashAddr = g_my_flash.flash_start_addr; end_addr =flashAddr+write_num*FLASH_INDEX_SIZE; ClrFlashPage(); //清除 } while (flashAddr < end_addr) { if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, flashAddr, *p_Write) == HAL_OK) { p_Write+=1; flashAddr = flashAddr + 8; } else { /* Error occurred while writing data in Flash memory. User can add here some code to deal with this error */ while (1) { LED_ON; HAL_Delay(1000); LED_OFF; HAL_Delay(1000); } } } flashAddr = flashAddr - FLASH_INDEX_SIZE; HAL_FLASH_Lock(); |
|
相关推荐
2个回答
|
|
你如果快速编程的话,相关函数要放到RAM里进行。前不久,我刚好基于G0测试过,你度娘一下这个 STM32L0芯片FLASH编程示例及提醒 做参考。快速编程函数放到RAM里进行。二者快速编程不完全一样,G0的快速编程是页编程,即256字节的页编程。
|
|
|
|
可能有几种原因导致flash快速编程失败:
1. Flash写入保护:确保在编程之前先解锁Flash,否则将无法进行写操作。你已经使用了`HAL_FLASH_Unlock()`函数来解锁Flash,所以这个问题可以排除。 2. Erase/Write的时间间隔:在进行写操作之前,必须确保在上一次擦除(Erase)操作之后至少等待2ms的时间间隔。这是因为擦除操作耗时较长,而STM32Flash编程函数内部有一个延时等待操作,确保在写入之前Flash已被擦除完毕。你的代码中没有显示的擦除操作,所以这个问题也可以排除。 3. Flash数据对齐:确保写入的数据是按照正确的字节对齐方式进行的。在你的代码中,你提到了已经进行了字节对齐。 这些都是常见的造成写入Flash失败的原因,根据你提供的代码和问题描述来看,这些问题都已经得到了正确处理。如果你仍然无法解决问题,可以尝试以下方法: - 检查芯片型号和Datasheet:确保你使用的STM32G030F6芯片支持快速编程操作。 - 更新HAL库:确保你使用的HAL库版本是最新的,或者尝试使用其他版本的HAL库。 - 检查编程操作的其他相关设置:例如Flash的起始地址是否设置正确,是否有其他函数或中断影响了Flash编程操作等。 - 检查编程操作的逻辑错误:检查是否有其他地方修改了Flash的内容或影响到了Flash编程的正确性。 如果上述方法仍然无法解决问题,建议检查芯片连接和硬件电路,并尝试使用其他编程方法(例如使用JTAG/SWD接口进行编程)来排除硬件问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1909 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1678 浏览 1 评论
1172 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
771 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1732 浏览 2 评论
1972浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
807浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
255浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
624浏览 3评论
634浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-24 09:41 , Processed in 0.881848 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号