当前位置: 首页 > 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);
}

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

相关文章:

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

1,概念 本系统包含一块 64K 字节&#xff08; Byte &#xff09;容量的 FLASH 存储器&#xff0c;共划分为 128 个页&#xff08; Sector &#xff09;&#xff0c;每个页&#xff08; Sector &#xff09; 的容量为 512 字节&#xff08; Byte &#xff09;。 FLASH …...

怎样才知道一个单片机的性能到极限了?

怎样才知道一个单片机的性能到极限了&#xff1f; 就题主的问题&#xff0c;应该是想问CPU利用率的问题。可以看看Rt-thread中关于统计CPU利用率函数&#xff0c;其主要实现方式是在idle线程先关闭中断计数后&#xff0c;正常计数(可被其他线程打断)&#xff0c;最近很多小伙伴…...

Android Studio的笔记--SerialPort串口通讯学习和使用

SerialPort串口通讯学习和使用 SerialPortandroid-serialport-api源码下载 Android-SerialPort-API源码下载readme版本 Android-SerialPort-Tool源码下载 Android-Serialport源码下载使用方法readme android中使用串口通信使用android-serialport-api方式第1种 链接第2种 导入S…...

MySQL 启动选项和字符集

1. 客户端和服务器 1.1 服务器程序 数据库实例&#xff1a;代表 MySQL 服务器程序的进程&#xff08; mysqld 可执行文件&#xff09; mysqld_safe&#xff1a;启动脚本&#xff0c;会间接调用 mysqld 并监控服务器运行状态。出现错误时可以帮助重启服务器程序&#xff0c;输…...

社区投稿|解码Big Vector,开启Sui超扩展性的新篇章

* 本文是来自Sui生态项目Typus团队的投稿&#xff0c;文中「我们」均指代该项目团队&#xff0c;转载时修改部分不准确的用词。 本研究报告介绍了Big Vector的概念&#xff0c;这是一种我们用于 Typus V2 的新数据结构&#xff0c;以缓解 Sui 上数组和动态字段(dynamic field)…...

Linux根目录下的目录结构及其作用详解

Linux根目录是文件系统的最顶层&#xff0c;它包含了一些子目录&#xff0c;每个子目录都有特定的功能和存储的文件。只有了解了各个文件的使用功能&#xff0c;才能更好的去使用Linux系统。希望通过下面这张图能够让你更加了解根目录下的各个目录的功能。...

源码和SaaS账号:租房与自建房的区别

在当今数字化时代&#xff0c;软件已成为企业运营的重要支撑。然而&#xff0c;对于许多中小企业来说&#xff0c;获取和运营软件的方式有两种&#xff1a;源码和SaaS账号。这两者有何区别呢&#xff1f;让我们用租房和自建房的比喻来解释。 价格比较 源码&#xff1a;购买源码…...

Docker容器设置为自动重启

有时Docker服务出现异常&#xff0c;或者服务器出现异常&#xff0c;需要重启Docker服务或者服务器&#xff1b; 如果希望有一部分基础的或者常用的容器&#xff0c;在服务或者服务器重启的时候&#xff0c;可以实现自动启动&#xff0c;仅需使用命令进行简单配置即可实现。 D…...

速卖通卖家如何通过自己搭建测评补单系统,提高产品权重和排名?

速卖通卖家如何给店铺增加权重和排名&#xff1f; 在竞争激烈的速卖通平台上&#xff0c;为自己的店铺增加权重是吸引更多买家和提升销售的关键。店铺的权重决定着在搜索排名、推荐位和广告展示方面的优先级。今天珑哥为您介绍一些有效的策略&#xff0c;帮助您提升速卖通店铺…...

香港金融科技周2023:AIGC重塑金融形态

10月31日&#xff0c;由香港财经事务及库务局与投资推广署主办的“香港金融科技周2023大湾区专场”盛大启幕。中国AI决策领先企业萨摩耶云科技集团创始人、董事长兼 CEO林建明受邀参加圆桌会议&#xff0c;与中国内地、香港以及全球金融科技行业顶尖人才、创新企业、监管机构和…...

6G关键新兴技术-智能超表面(RIS)技术演进

一、产品定义及范围 根据欧盟5G公私联盟协会(5G Infrastructure Public-Private Partnership, 5GPP)定义&#xff0c;可重构智慧表面(Reconfigurable Intelligent Surface, RIS)技术是由能够任意塑造电磁波面的材料组成&#xff0c;几乎是被动(Passice)设备&#xff0c;可以适…...

怎么让小程序排名靠前?小程序搜索排名问题

小程序的排名是十分重要的&#xff0c;因为这会直接影响到用户的点击率&#xff0c;用户在搜索小程序时&#xff0c;会看到搜索引擎的前几条搜索结果&#xff0c;如果您的小程序不在这些位置上&#xff0c;很可能就会被忽略&#xff0c;所以&#xff0c;想要让用户能够看到您的…...

使用Postman快速复现浏览器的请求(包括生成调用代码)

前言 大家好&#xff01;我是sum墨&#xff0c;一个一线的底层码农&#xff0c;平时喜欢研究和思考一些技术相关的问题并整理成文&#xff0c;限于本人水平&#xff0c;如果文章和代码有表述不当之处&#xff0c;还请不吝赐教。 好久没有写开发类的工具使用文了&#xff0c;这…...

四则运算的正则校验

文章目录 四则运算的正则校验带有变量的四则运算的正则校验带有括号的四则运算的正则校验变量使用${}包裹的四则运算正则表达式变量使用${}包裹的可以有括号的四则运算正则表达式变量使用#{}包裹的可以有括号的四则运算正则表达式变量使用${}或者 #{}包裹的可以有括号的四则运算…...

【备忘录】SpringBoot+ dynamic-datasource配置自定义多数据源

一、 业务场景解释 由于公司业务需要开发设计一款文件读取导入工具&#xff0c;导入的配置和目标数据库并不一定在同一个数据库地址&#xff0c;故需要使用到自定义数据源&#xff0c;并且支持数据源切换 大致场景如下&#xff1a; 二、工具选择 鉴于市面上有很多工具&#…...

制作docker镜像文件

技术主题 Docker作为一个开源的应用容器引擎&#xff0c;制作自己的docker镜像文件是使用docker的第一步&#xff0c;这样我们能够更好地管理应用程序。 技术原理 技术原理一&#xff1a;安装Docker 一般都是在官网下载特定的docker文件&#xff0c;然后安装即可 技术原理…...

JAVA 中 Socket 和 WebSocket 区别

区别: Socket: Socket是位于java.net包下的一个类&#xff0c;是 Java 提供的用于在客户端和服务器之间建立网络通信的底层套接字接口&#xff0c;用于传输层的网络通信。 WebSocket: WebSocket 是一种基于 TCP 协议的通信协议&#xff0c;建立在 Socket 的基础上&#xff0c…...

python 接收到一个接口的数据 是json格式 ,然后把其中键值对的一个值改掉 再返回给接口

先上代码 import json import requests # 发送请求获取接口数据 response requests.get(http://example.com/api/data) # 解析JSON数据 data json.loads(response.text) # 更改某个键值对的值 new_value new_value data[key_to_change] new_value # 将更改后…...

⌈C++11⌋实现一个简易计算器

原理&#xff1a; 数据栈&#xff1a;有数据就直接入栈 运算符栈&#xff1a;设遍历到当前的运算符位e&#xff0c;如果栈不为空&#xff0c;比较栈顶与当前运算符优先级e&#xff0c;当栈顶运算符优先级大于或者等于e的优先级&#xff0c;则出栈&#xff0c;并将两个数据栈的…...

面试算法45:二叉树最低层最左边的值

题目 如何在一棵二叉树中找出它最低层最左边节点的值&#xff1f;假设二叉树中最少有一个节点。例如&#xff0c;在如图7.5所示的二叉树中最低层最左边一个节点的值是5。 分析 可以用一个变量bottomLeft来保存每一层最左边的节点的值。在遍历二叉树时&#xff0c;每当遇到新…...

告别沉浸式白屏!UniApp中iOS/Android底部安全区与顶部状态栏颜色自定义全攻略

告别沉浸式白屏&#xff01;UniApp中iOS/Android底部安全区与顶部状态栏颜色自定义全攻略当开发者尝试在UniApp中实现沉浸式设计时&#xff0c;往往会遇到一个令人头疼的问题——默认的白色安全区和状态栏导致界面元素&#xff08;如电池图标、信号强度&#xff09;几乎不可见。…...

告别道路预测老套路:用ParkPredict+模型思路,解决停车场里的‘鬼探头’难题

破解泊车场景预测困局&#xff1a;ParkPredict模型的技术革新与实践停车场里的每一次转向、倒车和避让&#xff0c;都是对自动驾驶系统预测能力的极限挑战。与开放道路的规则明确不同&#xff0c;这里没有清晰的车道线指引&#xff0c;没有统一的行驶方向&#xff0c;只有随时可…...

第二周(第12周)

1.单电源供电的二阶低通滤波器2.功率放大电路...

企业云盘签章技术方案:从数字签名原理到工程落地

背景 电子签章在企业云盘中的落地&#xff0c;不只是一个"上传盖章图片"的功能实现。本质上&#xff0c;它是一套涉及数字签名、PKI基础设施、文档完整性校验的综合性技术方案。本文从技术选型角度&#xff0c;说清楚企业云盘内置签章需要解决哪些问题、主流实现方案…...

从零构建FOC轮腿机器人:开源平衡机器人完整指南

从零构建FOC轮腿机器人&#xff1a;开源平衡机器人完整指南 【免费下载链接】foc-wheel-legged-robot Open source materials for a novel structured legged robot, including mechanical design, electronic design, algorithm simulation, and software development. | 一个…...

别再瞎拖拽了!Unity Prefab从创建到批量修改的保姆级工作流(含变体与嵌套实战)

Unity Prefab高效工作流&#xff1a;从创建到批量修改的实战指南在Unity项目开发中&#xff0c;Prefab&#xff08;预制体&#xff09;是最基础也最强大的工具之一。但很多开发者&#xff0c;尤其是初学者&#xff0c;往往停留在简单的"拖拽-修改"阶段&#xff0c;没…...

Lovable电商网站搭建:如何用不到3人技术团队,72小时内上线PCI-DSS合规MVP版本?

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Lovable电商网站搭建 Lovable 是一个面向中小商户的轻量级电商解决方案&#xff0c;采用现代 Web 技术栈构建&#xff0c;强调可扩展性、用户体验与快速部署能力。本章将指导你从零开始搭建一个具备商品展示、…...

解锁你的音乐收藏:浏览器端音频解密完整指南

解锁你的音乐收藏&#xff1a;浏览器端音频解密完整指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcod…...

英雄联盟回放播放难题终极解决方案:ROFLPlayer完整使用指南

英雄联盟回放播放难题终极解决方案&#xff1a;ROFLPlayer完整使用指南 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为英雄联盟旧…...

还在手动触发Lindy子任务?这6个隐藏API+3个低代码集成技巧,今天就能上线全自动流水线

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Lindy多步骤任务自动化的价值与演进路径 Lindy效应指出&#xff0c;一项技术的预期剩余寿命与其当前已存在时间正相关&#xff1b;在自动化领域&#xff0c;Lindy原则催生了对“经久验证、语义稳定、可组合性强…...