当前位置: 首页 > news >正文

华大-HC32L130F8UA 内存使用注意事项

1,概念

  本系统包含一块 64K 字节( Byte )容量的 FLASH 存储器,共划分为 128 个页( Sector ),每个页( Sector
的容量为 512 字节( Byte )。 FLASH 控制器支持对 FLASH 存储器的擦除、编程以及读操作。本控制器
还支持对 FLASH 存储器擦写保护,以及控制寄存器的写保护。

2,功能描述

   本控制器支持对 FLASH 的字节( 8 位)、半字( 16 位)和字( 32 位)三种位宽的数据读写操作。注意,
字节操作的目标地址必须按字节对齐,半字操作的目标地址必须按半字对齐(地址最低位为 1’b0 ),字
操作的地址必须按字对齐(地址最低两位为 2’b00 )。如果目标地址没有按照位宽对齐,则该操作无效,
并且 CPU 会进入 Hard Fault 出错中断。
本控制器采用高安全性的硬件设计,具有 FLASH 操作源防御功能:仅当 FLASH 操作函数的地址位于
0~32K ,才能正确执行 FLASH 擦写操作。
FLASH 地址的 0~32K 具有更高的安全性,重要函数须放置此区域内;例如重要程序入口、中断入口函
数、高安全算法模块、 UID AES 、真随机数、 RTC 的算法配合,组成高安全认证系统   

擦除方式:1 页擦除  2 全片擦除 

3,实例

en_result_t WriteConfigToFlash(SubDeviceNode_t* sSubNode)
{	uint32_t point = 0;uint16_t crc16 = 0 ;char i = 0;en_result_t ret = Ok;FlashEraseSector();point += 2;point += 2;for(i = 0; i < MAX_SUB_NODE; i++){ret = Flash_WriteWord((uint32_t)(CONFIG_ADDRESS+point), sSubNodeDev[i].subNodeId);point += 4;}for(i = 0; i < sizeof(gMqttIP); i++){Flash_WriteByte((uint32_t)(CONFIG_ADDRESS+point),gMqttIP[i]);point++;}for(i = 0; i < sizeof(gMqttTopic); i++){Flash_WriteByte((uint32_t)(CONFIG_ADDRESS+point), gMqttTopic[i]);point++;}for(i = 0; i < sizeof(gMqttUser); i++){Flash_WriteByte((uint32_t)(CONFIG_ADDRESS+point), gMqttUser[i]);point++;}for(i = 0; i < sizeof(gMqttPassword); i++){Flash_WriteByte((uint32_t)(CONFIG_ADDRESS+point), gMqttPassword[i]);point++;}Flash_WriteHalfWord((uint32_t)(CONFIG_ADDRESS+point), gMqttPort);point += 2;for(i = 0; i < sizeof(gMqttClientId); i++){Flash_WriteByte((uint32_t)(CONFIG_ADDRESS+point), gMqttClientId[i]);point++;}//Printf("gImei=%s\n",gImei);for(i = 0; i < sizeof(gICCID); i++){Flash_WriteByte((uint32_t)(CONFIG_ADDRESS+point), gICCID[i]);point++;}ret = Flash_WriteHalfWord((uint32_t)(CONFIG_ADDRESS), point);crc16 = CRC16_Modbus(0xFFFF, (unsigned char*)CONFIG_ADDRESS, point);ret = Flash_WriteHalfWord((uint32_t)(CONFIG_ADDRESS+point), crc16);Printf("Write Flash point=%d crc16=0x%04x ret=%d\n",point, crc16, ret);return ret;
}

/********************************************************************************* \brief FLASH 字写**** 用于向FLASH写入1个字的数据.**** \param [in]  u32Addr         Flash地址** \param [in]  u32Data         1个字数据**** \retval Ok                    写入成功.** \retval ErrorInvalidParameter FLASH地址无效** \retval ErrorTimeout          操作超时*****************************************************************************/
en_result_t Flash_WriteWord(uint32_t u32Addr, uint32_t u32Data)
{en_result_t             enResult = Ok;volatile uint32_t       u32TimeOut = FLASH_TIMEOUT_PGM;if (FLASH_END_ADDR < u32Addr){enResult = ErrorInvalidParameter;return (enResult);}//busy?u32TimeOut = FLASH_TIMEOUT_PGM;while (TRUE == M0P_FLASH->CR_f.BUSY){if(0 == u32TimeOut--){return ErrorTimeout;}}//Flash 解锁Flash_UnlockAll();//set OPu32TimeOut = FLASH_TIMEOUT_PGM;while(Program != M0P_FLASH->CR_f.OP){if(u32TimeOut--){FLASH_BYPASS();M0P_FLASH->CR_f.OP = Program;}else{return ErrorTimeout;}}//write data*((volatile uint32_t*)u32Addr) = u32Data;//busy?u32TimeOut = FLASH_TIMEOUT_PGM;while (TRUE == M0P_FLASH->CR_f.BUSY){if(0 == u32TimeOut--){return ErrorTimeout;}}//Flash 加锁Flash_LockAll();return (enResult);
}

当出现无法把数据 写入内存时可从这几个方面查

http://www.lryc.cn/news/213948.html

相关文章:

  • 怎样才知道一个单片机的性能到极限了?
  • Android Studio的笔记--SerialPort串口通讯学习和使用
  • MySQL 启动选项和字符集
  • 社区投稿|解码Big Vector,开启Sui超扩展性的新篇章
  • Linux根目录下的目录结构及其作用详解
  • 源码和SaaS账号:租房与自建房的区别
  • Docker容器设置为自动重启
  • 速卖通卖家如何通过自己搭建测评补单系统,提高产品权重和排名?
  • 香港金融科技周2023:AIGC重塑金融形态
  • 6G关键新兴技术-智能超表面(RIS)技术演进
  • 怎么让小程序排名靠前?小程序搜索排名问题
  • 使用Postman快速复现浏览器的请求(包括生成调用代码)
  • 四则运算的正则校验
  • 【备忘录】SpringBoot+ dynamic-datasource配置自定义多数据源
  • 制作docker镜像文件
  • JAVA 中 Socket 和 WebSocket 区别
  • python 接收到一个接口的数据 是json格式 ,然后把其中键值对的一个值改掉 再返回给接口
  • ⌈C++11⌋实现一个简易计算器
  • 面试算法45:二叉树最低层最左边的值
  • Could not find org.jetbrains.kotlin:kotlin-stdlib-jre7:1.5.21.
  • LoRaWan之LoRaMAC 的快速入门指南
  • 中国教育企业出海 新兴技术助力抢占先机
  • IntelliJ IDEA2023旗舰版和社区版下载安装教程(图解)
  • 【RxJava】map过程中各个Observable生命周期分析
  • vue 获取上一周和获取下一周的日期时间
  • 线性代数 第四章 线性方程组
  • @DateTimeFormat和@JsonFormat注解
  • 做抖音短视频会经历哪些阶段?
  • 【Mquant】2、量化平台的选择
  • iPhone手机如何恢复删除的视频?整理了3个好用方法!