CMT2380F32模块开发6-flash例程
Posted andylauren
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMT2380F32模块开发6-flash例程相关的知识,希望对你有一定的参考价值。
本设备包含一颗 32kByte 容量的 FLASH 存储器,共划分为 64 个 Sector,每个 Sector 容量为 512Byte。本模块支持对该存储器的擦除、编程以及读取操作。此外,本模块支持对 FLASH 存储器擦写的保护,以及控制寄存器的写保护。
如果是初学者不建议使用这个做离线数据保存,还是老老实实外加eeprom吧,除非你明确的直到你的代码用了哪些flash,哪些falsh没有被使用。如果你是大神,可以使用这个功能做升级。
本样例展示FLASH的擦写功能,包括Sector擦除,字节/半字/字写功能。
en_result_t FlashWriteTest(void)
en_result_t enResult = Error;
uint32_t u32Addr = 0x3ff0;
uint8_t u8Data = 0x5a;
uint16_t u16Data = 0x5a5a;
uint32_t u32Data = 0x5a5a5a5a;
Flash_Init(FlashInt, 0);
Flash_SectorErase(u32Addr);
enResult = Flash_WriteByte(u32Addr, u8Data);
if (Ok == enResult)
if (*((volatile uint8_t*)u32Addr) == u8Data)
enResult = Ok;
else
return enResult;
else
enResult = Error;
return enResult;
u32Addr += 2;
enResult = Flash_WriteHalfWord(u32Addr, u16Data);
if (Ok == enResult)
if (*((volatile uint16_t*)u32Addr) == u16Data)
enResult = Ok;
else
return enResult;
else
return enResult;
u32Addr += 2;
enResult = Flash_WriteWord(u32Addr, u32Data);
if (Ok == enResult)
if (*((volatile uint32_t*)u32Addr) == u32Data)
enResult = Ok;
else
return enResult;
else
return enResult;
return enResult;
这是它的测试代码,就是对0x3ff0地址进行字节/半字/字 擦写读过程。读数据是通过指针强制类型转换进行的。
这个例程只能通过打断看,查看FlashWriteTest的返回结果。
单独跑这个程序都能成功,要是自己写的程序就不能保证了。
以上是关于CMT2380F32模块开发6-flash例程的主要内容,如果未能解决你的问题,请参考以下文章