完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我参考原子的战舰开发板
使用实验34 FLASH模拟EEPROM实验的Flash写操作函数 STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite) 从0x08003000开始写入数据,一次写入200个字节,刚开始写入正常,但是当起始地址为0x080033e8的时候,再写入200个字节时,从0x08003400开始就再也写不进去了, 这是为什么, 我的芯片是STM32F103RBT6 + 下面是我的一部分代码 void STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite) { u32 secpos; //扇区地址 u16 secoff; //扇区内偏移地址(16位字计算) u16 secremain; //扇区内剩余地址(16位字计算) u16 i; u32 offaddr; //去掉0X08000000后的地址 if(WriteAddr=(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))return;//非法地址 FLASH_Unlock(); //解锁 offaddr=WriteAddr-STM32_FLASH_BASE; //实际偏移地址. secpos=offaddr/STM_SECTOR_SIZE; //扇区地址 0~127 for STM32F103RBT6 secoff=(offaddr%STM_SECTOR_SIZE)/2; //在扇区内的偏移(2个字节为基本单位.) secremain=STM_SECTOR_SIZE/2-secoff; //扇区剩余空间大小 if(NumToWrite<=secremain)secremain=NumToWrite;//不大于该扇区范围 while(1) { STMFLASH_Read(secpos*STM_SECTOR_SIZE+STM32_FLASH_BASE,STMFLASH_BUF,STM_SECTOR_SIZE/2);//读出整个扇区的内容 for(i=0;i(STM_SECTOR_SIZE/2))secremain=STM_SECTOR_SIZE/2;//下一个扇区还是写不完 else secremain=NumToWrite;//下一个扇区可以写完了 } }; FLASH_Lock();//上锁 } 其中 void STMFLASH_Write_NoCheck(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite) { u16 i; for(i=0;i |
|
相关推荐
1个回答
|
|
STM32 Flash写入不正常的原因可能有以下几点:
1. Flash容量限制:STM32F103RBT6的Flash容量为128KB,如果写入的数据超过了Flash的容量,将无法继续写入。请检查你的Flash写入地址和数据量是否超出了Flash的容量。 2. Flash写入保护:STM32F103系列的Flash具有写入保护功能,如果启用了写入保护,将无法对Flash进行写入操作。请检查你的代码中是否启用了写入保护,并确保在写入前关闭写入保护。 3. Flash擦除问题:在写入Flash之前,需要先对目标区域进行擦除。如果擦除不成功,可能导致写入失败。请检查你的擦除操作是否正确执行。 4. 写入地址对齐:STM32 Flash写入操作要求地址对齐。对于STM32F103系列,半字(16位)写入操作需要地址为偶数。请检查你的写入地址是否满足对齐要求。 5. 写入速度问题:如果写入速度过快,可能导致Flash写入不稳定。请检查你的写入速度是否合适。 6. 代码问题:请检查你的STMFLASH_Write函数实现是否存在问题,例如写入循环、擦除操作等。 针对你的问题,当起始地址为0x080033e8时,再写入200个字节,从0x08003400开始就再也写不进去了。这可能是因为写入地址超出了Flash的容量,或者写入操作没有正确执行。建议你检查以下几点: 1. 确保写入地址和数据量没有超过Flash的容量。 2. 检查写入保护是否已关闭。 3. 确保在写入前对目标区域进行了正确的擦除操作。 4. 检查写入地址是否满足对齐要求。 5. 检查STMFLASH_Write函数的实现是否存在问题。 6. 如果可能,请尝试降低写入速度,以提高写入稳定性。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 03:40 , Processed in 0.718968 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号