调用iap_write_appbin接口Flash无法写入

2019-07-21 07:57发布

使用的芯片stm32f103cbt6
做了一个IAP功能,接收到数据,就用iap_write_appbin把数据写入flash。

调试了一下发现,
用了原子哥的历程里的iap_write_appbin,单步调试下去应该该跑的都跑了,但是flash不变。

测试程序是这样的

        while(1)
        {
                g_UpdateRecBuf[0] = 0x11;
                g_UpdateRecBuf[1] = 0x22;               
                g_UpdateRecBuf[2] = 0x33;               
                iap_write_appbin(FLASH_TEMPAPP_ADDR,&g_UpdateRecBuf[0],16);//Ë¢èëFLASH
                delay_ms(100);
                printf("0x%x 0x%x 0x%x ",*(u8*)FLASH_TEMPAPP_ADDR,*(u8*)(FLASH_TEMPAPP_ADDR+1),*(u8*)(FLASH_TEMPAPP_ADDR+2));
        }


打出来的数跟我单步调试,使用memory窗口调试看到的内存是一样的,而不是写进去的。

会有什么可能原因吗?
难道这个芯片还需要刷cache?


微信图片_20181109172211.jpg




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
tao475824827
1楼-- · 2019-07-21 13:06
换了个芯片好了。
tao475824827
2楼-- · 2019-07-21 13:09
是不是因为我写的太短了?
tao475824827
3楼-- · 2019-07-21 13:34
或者什么初始化没做?没找到有需要的啊
tao475824827
4楼-- · 2019-07-21 17:00
这个地址有限制?


我之前定义        #define FLASH_TEMPAPP_ADDR 0x08006400
不行

改成0x08006000,0x08006100,0x08006200,0x08006300都可以

是不是因为我之前把APP程序的hex程序直接下载到了0x08006400这个位置上了?
tao475824827
5楼-- · 2019-07-21 19:51
 精彩回答 2  元偷偷看……
正点原子
6楼-- · 2019-07-21 22:30
tao475824827 发表于 2018-11-9 17:37
这个地址有限制?

6400应该没问题才对
继续调调吧

一周热门 更多>