当前位置: 首页 > 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;每当遇到新…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...