完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我在CC2530芯片上往FLASH里写数据,第一次能写进去,然后第二次往相同地址写数据读出来的还是第一次的数据,没有覆盖掉,我也擦除页了,是什么原因?
case HEAD3: memcpy(recv_buf,rf_rx_buf,sizeof(rf_rx_buf)); Flash_PageErase(8); //擦除FLASH页 WriteFlashDMA(recv_buf,12,0x4100); //写入FLASH memset(recv_buf,0,12); memset(rf_rx_buf,0,rf_rx_buf[1]); break; void READ_FLASH() { Read_Flash_To_Buf(0xC100,Read_Buf,12); //从FLASH读出数据 Gid = Read_Buf[2]; Did = Read_Buf[3]; TempZero = Read_Buf[4]*16*16 + Read_Buf[5]; // 基值 k = Read_Buf[6] + Read_Buf[7]/100.0; //温度系数 p = Read_Buf[8]; //休眠时间系数 } |
|
相关推荐
3个回答
|
|
你擦除以后,读取一下对应数据,看看是否变0XFF了?
|
|
|
|
没有,还是之前写入的值,是不是擦除没成功
我的擦除代码: void Flash_PageErase(uchar byPage) { EA=0; while(FCTL & 0x80); //等待闪存控制器整备好 FADDRH = byPage << 1; //选择擦除的页面 FCTL |= 0x01; //启动页面擦除 while(FCTL & 0x80); //等待擦除完成 EA=1; } 是不是擦除页不对?我是对照着这张图查看的page |
|
|
|
那就肯定擦除失败了。。。
|
|
|
|
只有小组成员才能发言,加入小组>>
3126 浏览 9 评论
2824 浏览 16 评论
3337 浏览 1 评论
8707 浏览 16 评论
3928 浏览 18 评论
9544浏览 3评论
881浏览 3评论
451浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
452浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2174浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-18 09:30 , Processed in 0.859887 second(s), Total 84, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号