MKE06-KDS-PE使用IntFlash方法

单片机:MKE06Z
环境:KDS(Kinetis Design Studio)
目的:使用片内的Flash存储若干数据,实现读写。

  1. KDS的PE中有两个关于内部flash的组件:FLASH_LDD和IntFLASH,其中后者高级点,可以选择后者。
  2. 然后双击组件,对其进行配置。可能需要配置FLASH_LDD组件中的频率,这里配置为12M。
    有三种写的方法,可以选择后两者。第一种不进行擦除,需要手动先擦除。
    擦除后为0xFF。
    在这里插入图片描述
  3. 重要的选择我们自己使用的Flash的地址,系统默认的程序段放在地址从0x410–0x1FFFF的范围内,其实真正的程序占不满,这里把m_text的size修改为0x1F000,那么供我们使用的范围为0x1F410~0x1FFFF,大小为3055个字节。(双击CPU组件,选择Build options)
    也可以通过生成的.map文件(在Debug文件夹中)查看程序和变量的分布情况。
    当然也可以不修改,修改了之后PE在生成代码时,应该会在我们设定好的范围内生成,这样更加安全点。

在这里插入图片描述

测试代码和结果如下。
uint8 u8data_read;
uint8 u8data_write = 0x33;

uint16 u16data_read;
uint16 u16data_write = 0x4455;

uint32 u32data_read;
uint32 u32data_write = 0x66778899;

byte data_read[50];
byte data_write[] = {0x00,0x0B,0xCC,0x40,0x01,0x40,0x01,0x5B,
0x13,0x79,0x00,0x11,0x50,0x7B,0x01,0x21,
0x5A,0x1C,0x79,0x00,0x39,0xC6,0x81,0x5B,
0x3A,0xC6,0x10,0x7b,0x02,0xF0,0x06,0xC1,
0x1B,0x00};

void test_flash(void)
{
IFsh1_SetByteFlash(0x1F800,u8data_write);
IFsh1_GetByteFlash(0x1F800,&u8data_read);

IFsh1_SetWordFlash(0x1F804,u16data_write);
IFsh1_GetWordFlash(0x1F804,&u16data_read);

IFsh1_SetLongFlash(0x1F808,u32data_write);
IFsh1_GetLongFlash(0x1F808,&u32data_read);

IFsh1_SetBlockFlash(&data_write[0],0x1F810,sizeof(data_write));
IFsh1_GetBlockFlash(0x1F810,&data_read[0],sizeof(data_write));
}

在这里插入图片描述

  1. 上面的8个函数,有的可能需要先使能再使用。点开左边IntFlash组件,找到相应的函数,右键->Toggle Enable/Disable,然后重新生成代码,编译即可。
  2. 后面的SetBolckFlash有时会漏掉后面的两个字节或是只存储了前8个字节,所以,最好用前面的3种方法,计算好了地址,然后可以一一对应的存储。
  3. 最后可以在调试暂停后,打开Memery(Window菜单栏下),查看实际Flash的存储情况,如上图所示。
    完。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值