OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3027|回复: 3

Mini板Flash模拟EEPROM实验代码bug?

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-5-6
在线时间
2 小时
发表于 2020-5-8 16:34:39 | 显示全部楼层 |阅读模式
本帖最后由 唯心主义roc 于 2020-5-9 09:46 编辑


更正一下,代码没bug,是我传参不对。
u16 NumToWrite,传入半字数u16,我传的是字节数u8,所以传入时要写为
         sizeof(传入数据)/sizeof(u16)



学习Mini板Flash模拟EEPROM实验时,发现代码有bug,会影响存入的数据。
此函数,擦除扇区写入和直接写入两种情况,写入数据的大小一个除2,一个没有。应该都除2

void STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite)                        if(i<secremain)//需要擦除
                {
                        FLASH_ErasePage(secpos*STM_SECTOR_SIZE+STM32_FLASH_BASE);//擦除这个扇区
                        for(i=0;i<secremain;i++)//复制
                        {
                                STMFLASH_BUF[i+secoff]=pBuffer;         
                        }
                        STMFLASH_Write_NoCheck(secpos*STM_SECTOR_SIZE+STM32_FLASH_BASE,STMFLASH_BUF,STM_SECTOR_SIZE/2);//写入整个扇区  ,扇区大小/2
                }else STMFLASH_Write_NoCheck(WriteAddr,pBuffer,secremain);//写已经擦除了的,直接写入扇区剩余区间.            待写入空间没除2

如图所示,待写入数据为(u8)0x05,(int)0x0000000a。如果不除2,则会多写入1倍的数据。

待写入数据

待写入数据

bug,没有除2

bug,没有除2

更正后,除2

更正后,除2
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2018-12-27
在线时间
0 小时
发表于 2020-5-8 16:34:42 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-5-6
在线时间
0 小时
发表于 2020-5-8 16:34:42 | 显示全部楼层
帮顶!!!!!!
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-5-6
在线时间
2 小时
 楼主| 发表于 2020-5-8 16:40:13 | 显示全部楼层

我的帖子审核中,你们怎么能看到呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 06:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表