stm32 片上flash用作EEPROM(掉电保存)(绝对可用)

2024-02-22 11:08

本文主要是介绍stm32 片上flash用作EEPROM(掉电保存)(绝对可用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一、源码:

#if !defined  (_FLASH_H)
#define _FLASH_H
#define FLASH_ADR 0x08010000  //要写入数据的地址
#define u8 INT8U
#define u16 INT16U
#define u32 INT32Uunion union_temp16
{unsigned int un_temp16;unsigned char  un_temp8[2];  // example 16: 0x0102  8:[0]2 [1]1
}my_unTemp16;typedef struct 
{u8 apn[20];u8 useName[20];u8 password[20];u8 serverIP[16];u8 port[6];u8 useCall[3][15];
}configStruct;configStruct myConf =
{"cmnet","\0","\0","201.2.2.2","9002",{"test123","\0","\0"}
};/******************************************************
flash 字符串写入
每次存入两个字节
*******************************************************/
void FlashWriteStr( u32 flash_add, u16 len, u16* data )
{//char cp[12];//u8 s = 0;u16 byteN = 0;FLASH_Unlock();FLASH_ErasePage(flash_add);//sprintf( cp, "len:%d", len);//USART1_Puts(cp);while( len ){my_unTemp16.un_temp8[0] = *(data+byteN);my_unTemp16.un_temp8[1] = *(data+byteN+1);  FLASH_ProgramHalfWord( flash_add+byteN , my_unTemp16.un_temp16 );//sprintf( cp, "bye:%d\r\n", s);//USART1_Puts(cp);if( 1==len ){//如果数据长度是奇数,为1的时候跳出break;               }else{byteN += 2;len -= 2;} }FLASH_Lock();
}/******************************************************
flash 字符串读出到指定data中 
地址与写入data地址同 读出的保存类型也必须一致
*******************************************************/
void FlashReadStr( u32 flash_add, u16 len, u16* data )
{u16 byteN = 0;while( len ){my_unTemp16.un_temp16 = *(vu16*)(flash_add+byteN);if( 1==len ){*(data+byteN) = my_unTemp16.un_temp8[0];break;     }else{  *(data+byteN) = my_unTemp16.un_temp8[0];*(data+byteN+1) = my_unTemp16.un_temp8[1];byteN += 2;len -= 2;}}
}#endif

二、调用方法:

INT16U data[2]={0x3234,0x3533};FlashWriteStr(FLASH_ADR,2,&data[0]);//写入两个16位数据FlashReadStr(FLASH_ADR,2,&data[0]);//读取两个16位数据

爱极客官方论坛,期待与你一起改变世界!

这篇关于stm32 片上flash用作EEPROM(掉电保存)(绝对可用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735062

相关文章

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

什么是 Flash Attention

Flash Attention 是 由 Tri Dao 和 Dan Fu 等人在2022年的论文 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 中 提出的, 论文可以从 https://arxiv.org/abs/2205.14135 页面下载,点击 View PDF 就可以下载。 下面我

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu

VMware8实现高可用(HA)集群

陈科肇 =========== 操作系统:中标麒麟高级操作系统V6 x86-64 实现软件:中标麒麟高可用集群软件 ======================== 1.环境的规划与配置 硬件要求 服务器服务器至少需要 2 台,每台服务器至少需要 2 块网卡以做心跳与连接公网使用存储环境 建议使用一台 SAN/NAS/ISCSI 存储作为数据共享存储空间 软