首页 > 其他分享 >回忆录——ST内部FLASH

回忆录——ST内部FLASH

时间:2024-10-21 20:45:10浏览次数:7  
标签:回忆录 FLASH MyFLASH ST 地址 擦除 Address uint32

1.读内部FLASH

点击查看代码
/**
  * 函    数:FLASH读取一个32位的字
  * 参    数:Address 要读取数据的字地址
  * 返 回 值:指定地址下的数据
  */
uint32_t MyFLASH_ReadWord(uint32_t Address)
{
	return *((__IO uint32_t *)(Address));	//使用指针访问指定地址下的数据并返回
}

/**
  * 函    数:FLASH读取一个16位的半字
  * 参    数:Address 要读取数据的半字地址
  * 返 回 值:指定地址下的数据
  */
uint16_t MyFLASH_ReadHalfWord(uint32_t Address)
{
	return *((__IO uint16_t *)(Address));	//使用指针访问指定地址下的数据并返回
}

/**
  * 函    数:FLASH读取一个8位的字节
  * 参    数:Address 要读取数据的字节地址
  * 返 回 值:指定地址下的数据
  */
uint8_t MyFLASH_ReadByte(uint32_t Address)
{
	return *((__IO uint8_t *)(Address));	//使用指针访问指定地址下的数据并返回
}



2.擦除

点击查看代码
/**
  * 函    数:FLASH全擦除
  * 参    数:无
  * 返 回 值:无
  * 说    明:调用此函数后,FLASH的所有页都会被擦除,包括程序文件本身,擦除后,程序将不复存在
  */
void MyFLASH_EraseAllPages(void)
{
	FLASH_Unlock();					//解锁
	FLASH_EraseAllPages();			//全擦除
	FLASH_Lock();					//加锁
}

/**
  * 函    数:FLASH页擦除
  * 参    数:PageAddress 要擦除页的页地址
  * 返 回 值:无
  */
void MyFLASH_ErasePage(uint32_t PageAddress)
{
	FLASH_Unlock();					//解锁
	FLASH_ErasePage(PageAddress);	//页擦除
	FLASH_Lock();					//加锁
}

3.写,要先解锁,再写 ,再锁上

点击查看代码
/**
  * 函    数:FLASH编程字
  * 参    数:Address 要写入数据的字地址
  * 参    数:Data 要写入的32位数据
  * 返 回 值:无
  */
void MyFLASH_ProgramWord(uint32_t Address, uint32_t Data)
{
	FLASH_Unlock();							//解锁
	FLASH_ProgramWord(Address, Data);		//编程字
	FLASH_Lock();							//加锁
}

/**
  * 函    数:FLASH编程半字
  * 参    数:Address 要写入数据的半字地址
  * 参    数:Data 要写入的16位数据
  * 返 回 值:无
  */
void MyFLASH_ProgramHalfWord(uint32_t Address, uint16_t Data)
{
	FLASH_Unlock();							//解锁
	FLASH_ProgramHalfWord(Address, Data);	//编程半字
	FLASH_Lock();							//加锁
}

标签:回忆录,FLASH,MyFLASH,ST,地址,擦除,Address,uint32
From: https://www.cnblogs.com/qjjim4231/p/18490321

相关文章

  • AtCoder Beginner Contest 376
    A-CandyButton题意按一次按钮得到一块糖,条件是这次按按钮的时间间隔上次得到糖的时间\(\gec\)。现在按\(n\)次按钮,已知第\(i\)次按按钮时间为\(t_i\),求得到的糖果数。思路模拟。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlong......
  • Ubuntu20.04环境下XTDrone三维运动规划:运行ego时报错“[FSM]:state:INIT no odom.”
       这篇文章以使用Gazebo位姿真值为例,如果使用视觉惯性里程计,解决的思路是一样的。       按照语雀官方文档启动egoplanner后,终端可能会报出如下图所示的"noodom"提示,飞机无法飞向给定目标点:    出现这个问题的原因是订阅的里程计话题名不对,我......
  • 【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
     ......
  • 目前最新 ReflectorInstaller_11.1.0.2067 .NET 反编译软件
    目前最新ReflectorInstaller_11.1.0.2067.NET反编译软件一、简介二、.NETReflector的主要功能包括:1.**反编译**:反编译是将已编译的.NET程序集(如.dll或.exe文件)转换回可读的源代码。这使得开发者可以查看和学习第三方库的实现细节,或者在没有源代码的情况下进行故障......
  • AtCoder Beginner Contest 369 - VP记录
    A-369样例已经包括了所有的情况(真良心)。点击查看代码#include<cstdio>#include<algorithm>usingnamespacestd;intmain(){ inta,b;scanf("%d%d",&a,&b); intans=0; if(a>b)swap(a,b); if(a==b)ans=1; elseif((b-a)&1)ans=2; else......
  • MIT-OC Electrochemical Energy Systems4-1
    四、输运现象L16浓度极化目录浓度极化的背景线性扩散与对流2.1费克定律2.2分子随机游走与扩散系数2.3质量守恒与对流扩散方程极限电流密度3.1浓度极化的三种基本机制3.2极限电流的定义3.3极限电流密度的推导固体氧化物燃料电池实例4.1电池反应及稳态扩散4.2......
  • Steam游戏共享全攻略:可共享游戏范围与合规操作指南
    在Steam这个全球知名的游戏平台上,游戏共享功能为玩家提供了一种便捷的方式,使他们能够与家人或朋友共享自己的游戏库,而无需每个人都购买相同的游戏。然而,这一功能并非没有限制和规定。本文将详细介绍Steam游戏共享的可共享游戏范围以及合规操作指南,帮助玩家更好地理解和使用这一......
  • 对普通人来说,Stable diffusion 和 Midjourney 怎么选?他们有什么区别?
    这个问题我觉得挺好,因为虽然StableDiffusion(SD)和Midjourney(MJ)这2个AI绘画工具的名字已经深入广大AI爱好者的内心了,但对于普通人(包括刚接触到AI绘画的童鞋)来说,看到这2个名字仍然还是会感觉到陌生。那么,今天我就来给新手用户来讲讲这2个AI绘画工具的区别,我们应该如何选择?......
  • 【ios】使用TestFlight将app分发给测试人员(超详细)
    我的环境:macos系统是Ventura13.0xcode是14.2(后面发现至少需要15版本的xcode才能上传app)证书生成  可以通过xcode生成Distribution类型的证书,如果你已经有的话那就忽略,这个证书也是备案时所需的。我是已经有证书了,后续的步骤使用的是之前已有备案证书。这个步骤只是放......
  • HarmonyOS:AbilityStage组件容器介绍
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......