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

来源:互联网 发布:半自动咖啡机 知乎 编辑:程序博客网 时间:2024/05/16 06:54

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

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

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

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

举个栗子:

#define START_ADDR  0x00006400#define PAGE_ADDR   (START_ADDR / 1024)//一页为1Kuint32_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功能可以正常使用了

0 0
原创粉丝点击