HR8P506,FLASH的IAP操作与RAM不得不说的秘密

好久不更新,今天弄了个FLASH的IAP自编程操作,,,
进行这节前一定一定要熟读FLASH章节.

首先,要做IAP操作要记得将配置字设置一下.
这里写图片描述

可以看到,最快捷的方式是将FWPEB位设置成Disable就好了.
其余设置自己领悟.

然后只要在程序中调用已经写好的库函数就好了.

举个栗子:

#define START_ADDR  0x00006400
#define PAGE_ADDR   (START_ADDR / 1024)//一页为1K

uint32_t rbuf;
uint32_t Time;

int main(void)
{
    while (1)
    {
        Time++;
        if(ReadKey)//按键按下,将计时数值写入FLASH
        {
            IAP_ErasePage(PAGE_ADDR);
            IAP_WriteWord(0, PAGE_ADDR, Time);
        }

        IAP_Read(&rbuf, START_ADDR + count, 1);//读出FLASH内容  
        printf("Time: %5d Flash: %5d ",Time,rbuf);//打印数据
    }
}

这个程序,,,只是写大概意思,请自行补全…

编译,下载.

但是发现每次要写入FLASH的时候,,,单片机都复位了….
这是嘛回事.

这里写图片描述

跟踪发现,程序每次进行到这里就复位了.
使能FLASH操作单片机就进入了二次元.这是怎么回事.

折腾了一下午,,,最后发现手册里面如是说
这里写图片描述

程序要在SRAM里面运行才正常,,,,,
SRAM:怪我咯..

那么问题来了,怎样才能让代码在SRAM里运行呢…
很简单:

这里写图片描述

选中lib_flashiap.c文件,右键,选择Options for File ‘lib_flashiap.c’这个选项.

这里写图片描述

在Code/Const这里选择成IRAM1就好了.
点击确定,重新编译,烧录.

OK,IAP功能可以正常使用了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值