stm32 Flash读写独立函数[库函数]
头文件:
#ifndef __BSP_FLASH_H
#define __BSP_FLASH_H
#include "stm32f10x.h" typedef enum {
FLASH_WRITE_OK = ,
FLASH_WRIKE_NO = ,
FLASH_READ_OK = ,
FLASH_READ_NO =
}FLASH_FLAG ; extern unsigned char FLASH_WRITE(unsigned short int * memory_data);
extern unsigned char FLASH_READ(unsigned short int * memory_data,unsigned short int n); #endif /* __LED_H */
读写函数:
#include "bsp_flash.h" FLASH_FLAG FLASH_STATUS;
static u32 count = ;
/**---------------------------------------------------------------------------------
* @brief FLASH写入必不可少步骤
* @param 输入数据起始地址
* @retval 函数有无执行完毕
--------------------------------------------------------------------------------*/ unsigned char FLASH_WRITE(unsigned short int * memory_data)
{
static int t;
count = ;
/*Enables or disables the Internal High Speed oscillator (HSI).*/
RCC_HSICmd(ENABLE);
/*打开FLASH可擦除控制器*/
FLASH_Unlock();
/*将flash三个标志位全清*/
FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
FLASH_ErasePage(0x8002000);
t = sizeof((const char *)memory_data);
while(count <= t)
{
/*flash 为一个字节存储,16位数据必须地址加2*/
FLASH_ProgramHalfWord((0x8002000 +count*),*(memory_data+count));
count++;
if(count > t)
{
FLASH_STATUS = FLASH_WRIKE_NO;
return FLASH_STATUS;
}
}
/* Locks the FLASH Program Erase Controller.*/
FLASH_Lock();
RCC_HSICmd(DISABLE);
FLASH_STATUS = FLASH_WRITE_OK;
return FLASH_STATUS;
} /**---------------------------------------------------------------------------------
* @brief FLASH读出函数
* @param memory_data:输出存放地址,n 输出个数
* @retval 函数有无执行完毕
--------------------------------------------------------------------------------*/
unsigned char FLASH_READ(unsigned short int * memory_data,unsigned short int n)
{
count = ;
while(count < n)
{
*(memory_data+count) = *(u16 *)(0x8002000 + count*);
printf("\r %d \r",*(memory_data+count)); //读取
count++;
if(count > n)
{
FLASH_STATUS = FLASH_READ_NO;
return FLASH_STATUS;
}
}
//FLASH_ErasePage(0x8002000);
FLASH_STATUS = FLASH_READ_OK;
return FLASH_STATUS;
} /*********************************************END OF FILE**********************/
stm32 Flash读写独立函数[库函数]的更多相关文章
- STM32 对内部FLASH读写接口函数(转)
源:STM32 对内部FLASH读写接口函数 因为要用内部FLASH代替外部EEPROM,把参数放在STM32的0x08000000+320K处,其中20K是bootloader,300K是应用程序. ...
- stm32——Flash读写
stm32——Flash读写 一.Flash简介 通过对stm32内部的flash的读写可以实现对stm32的编程操作. stm32的内置可编程Flash在许多场合具有十分重要的意义.如其支持ICP( ...
- stm32 Flash读写[库函数]
stm32 的内置可编程Flash在许多场合具有十分重要的意义.如其支持ICP特性使得开发人员对stm32可以警醒调试开发,可以通过JTAG和SWD接口对stm32进行程序烧写:支持IAP特性使得开发 ...
- STM32 对内部FLASH读写接口函数
因为要用内部FLASH代替外部EEPROM,把参数放在STM32的0x08000000+320K处,其中20K是bootloader,300K是应用程序. 原理:先要把整页FLASH的内容搬到RAM中 ...
- 野火STM32 Flash&sd卡模拟U盘
在USB库文件mass_mal.c中添加对flash和sd读写的函数,USB库调用这些函数从而实现模拟U盘的功能 //mass_mal.c /* Includes ------------------ ...
- [nRF51822] 6、基于nRF51822平台的flash读写研究
前言 本文重点介绍flash的数据存取特性.flash的内存划分.一个简单的存取图片的内存管理方式,以及对flash写前删的时间.删后读的时间.写后读的时间进行测量的一个小实验.目的在于更全面了解fl ...
- STM32 Flash 永久用户数据空间
/********************************************************************************* * STM32 Flash 永久用 ...
- u-boot分析(九)----nand flash初始化|nand flash读写分析
u-boot分析(九) 上篇博文我们按照210的启动流程,分析到了初始化串口,由于接下来的取消存储保护不是很重要,所以我们今天按照u-boot的启动流程对nand flash初始化进行分析. 今天我们 ...
- 关于STM32 Flash的一些问题
注:本人感觉是STM32 Flash本身的问题. 最近做STM32的远程升级,保存到Flash里面,用于记录更新状态的信息总是无故的清理掉 最终测试发现 STM32的 Flash 擦除操作 并不一定会 ...
随机推荐
- CSS3 Transform变形(2D转换)
Transform:对元素进行变形:Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞.开始,结束.Animation:对元素某个属性 ...
- MQTT-SN协议乱翻之小结篇
前言 这里简单做一些小结和对比,针对前面的协议翻译部分,一阶段的学习完结. MQTT-SN VS MQTT MQTT-SN基于MQTT原有语义,但做了很多的调整.比如: 一个CONNECT消息被拆分为 ...
- vux报错二
执行npm run build后 "build": "node build/build.js", // 输出提示信息 - 提示用户请在 http 服务下查看 ...
- Linux应急响应思路详谈
一.主机篇: 1.自动化初筛,建议使用RootkitHunter (1)安装 $sudo wget https://jaist.dl.sourceforge.net/project/rkhunter/ ...
- Jboss AS 7 部署web应用程序时无法初始化spring的bean的解决办法
Jboss AS 7 在部署web应用程序的时候无法初始化spring的bean(在tomcat下边不会出现这个问题) 原因是web应用程序没有导入jboss对spring的支持的jar包 解决方法: ...
- js里面return 和 return false的区别
js里面return 和 return false的区别 1.都可以终止执行当前方法: 2.如果方法A调用了方法B,则在方法A中使用return可以终止程序,但是在方法B中使用return则终止执行B ...
- @Apiimplicitparam的paramType
转自:https://swagger.io/docs/specification/describing-parameters/ Parameter Types OpenAPI 3.0 distingu ...
- 【巷子】---vue路由懒加载---【vue】
一.懒加载 也叫延迟加载或者按需加载,即在需要的时候进行加载, 二.为什么要使用懒加载 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要 ...
- 浅谈Lambda表达式详解
lambda简介 lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫他,“转到”或者 “成为”.运算符将表达式分为两部分,左边指定 ...
- FZU 2098 刻苦的小芳(卡特兰数,动态规划)
Problem 2098 刻苦的小芳 Accept: 42 Submit: 70 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Descr ...