完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
转一篇解决flash操作的帖子
## MCU单片机操作内部flash是很常用的 ### 但是在操作内部flash的时候可能出现重启的现象,这种情况是什么问题引起的呢? 出现这种情况的很大一部分可能是中断打断程序当前正在操作内部flash,在操作内部flash的时候是不能被打断的,可以尝试这样写 /************************************************************ *Function :FlashOption_Erase *Descriptor : *Input :null *Return :none *Hist : *************************************************************/ uint32_t FlashOption_Program(uint32_t ProgramAddress, uint32_t* ProgressBuf, uint32_t length) { /* Return code from each flash driver function */ status_t result; __disable_irq(); result = FLASH_Program(&flashDriver, ProgramAddress, ProgressBuf, length); __enable_irq(); if (kStatus_FLASH_Success != result) { log_u("FLASH Program(%d) error!rn", result); return result; } return result; } /************************************************************ *Function :FlashOption_Erase *Descriptor : *Input :null *Return :none *Hist : *************************************************************/ uint32_t FlashOption_Erase(uint32_t EraseAddress, uint32_t size) { /* Return code from each flash driver function */ status_t result; uint32_t ector; EraseAddress &= 0xFFFFF000; if (size < 4096) ector = 4096; else ector = size; __disable_irq(); result = FLASH_Erase(&flashDriver, EraseAddress, ector, kFLASH_apiEraseKey); __enable_irq(); if (kStatus_FLASH_Success != result) { log_u("FLASH Erase(%d) error!rn", result); } /* Verify sector if it's been erased. */ __disable_irq(); result = FLASH_VerifyErase(&flashDriver, EraseAddress, ector, kFLASH_marginValueUser); __enable_irq(); if (kStatus_FLASH_Success != result) { log_u("FLASH_VerifyErase(%d) error!rn", result); } return result; } 在这两段代码中在操作flash之前,加入了关闭总中断,操作完成之后开启总中断,这样内部flash的操作就不会被打断,程序也不会重启 |
|
相关推荐
|
|
277 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
368 浏览 0 评论
766 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
592 浏览 0 评论
879 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12035 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 01:09 , Processed in 0.514672 second(s), Total 64, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号