完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
HAL_StatusTypeDef statu;
FLASH_EraseInitTypeDef f; uint32_t Address=0x08010000; uint32_t data=0x12345678; uint32_t PageError = 0;//set page error HAL_FLASH_Unlock();//解锁 //erase flash f.TypeErase = FLASH_TYPEERASE_PAGES; f.PageAddress = Address; f.NbPages = 1; HAL_FLASHEx_Erase(&f, &PageError); HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, data); HAL_FLASH_Lock();//锁 这个程序放在初始化里,是可以写成功的,如果放在主循环或者是外部触发的情况去写,就不成功,请大侠们帮我看看,是怎么回事?还是其它的设置不对?谢谢!! |
|
相关推荐
7个回答
|
|
|
|
|
|
楼主要尝试去读取HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, data)这个函数的返回值是什么,靠这个进一步去判断。
|
|
|
|
程序看不出啥问题,单步调试能通过吗
|
|
|
|
// 在某页面地址中写一个页面的数据,按字(uint32_t)写入
HAL_StatusTypeDef Flash_Write_aPage_Words(uint32_t pageaddr, uint32_t *words) { uint32_t i, addrbuf, page_no, page_start_addr; uint32_t PageError = 0; FLASH_EraseInitTypeDef EraseInitStruct; HAL_StatusTypeDef retvalue; page_no = pageaddr / FLASH_PAGE_SIZE; // 计算该地址处于哪个页面 page_start_addr = page_no * FLASH_PAGE_SIZE; // 页面开始地址,按字节计算 HAL_FLASH_Unlock(); // 擦除该页面 /* Fill EraseInit structure*/ EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; EraseInitStruct.PageAddress = page_start_addr; EraseInitStruct.NbPages = 1; PageError = 0; if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK) { retvalue = HAL_ERROR; // 页面擦除失败 ,退出 } else { // 页面擦除成功,写入该页面的数据 retvalue = HAL_OK; addrbuf = page_start_addr; for(i=0;i if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addrbuf, words) == HAL_OK) { addrbuf += 4; } else { retvalue = HAL_ERROR; i = FLASH_PAGE_SIZE_IN_WORD; } } } HAL_FLASH_Lock(); return retvalue; } |
|
|
|
初始化的时候没有问题,在没有进入主循环之前我尝试多次进行读写,都没问题,但是一旦进入主循环,就不行了,在各位大牛的帮助提示下,发现是擦除出现问题了,FLASH_FLAG_WRPERR,提示为写保护标志出错,我所有中断都关掉,还是会出现这个问题,干脆忽略这个错误,强行擦除,又正常,
status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); |
|
|
|
应该是哪儿没有配置对?
|
|
|
|
说明你的flash有在***作.其实最大可能就是systick.flash是独占式的,如果timeout,那就是有可能被占了,建议调试看看
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
316 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
834 浏览 2 评论
1996 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1099 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1525 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 07:36 , Processed in 0.658909 second(s), Total 88, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号