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 擦除操作 并不一定会 ...
随机推荐
- POJ1125-Stockbroker Grapevine Floyd算法多源最短路径
这题的思路还是比较简单,用弗洛伊德算法打表后,枚举来找到最小值 代码如下 注意最后判断时候的语句 在这里错误了很多次 # include<iostream> # include<al ...
- Hibernate插入、查询、删除操作 HQL
Hibernate的所有的操作都是通过Session完成的. 基本步骤如下: 1:通过配置文件得到SessionFactory: SessionFactory sessionFactory=new C ...
- C# 文件夹的常用操作
C#获取文件夹下的所有文件的文件名 string path = @"E:\微课视频大于200M"; DirectoryInfo folder = new DirectoryInfo ...
- Linux(Centos)下搭建SVN服务器
鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人,本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结! /******开始***** ...
- 【node】---socket---网络通信---【巷子】
1.什么是一个socket? 网络上两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为socket 2.http与socket的区别 在以前我们实现数据交换已经有了HTTP协议,为什么还要 ...
- 170517、Redis 的安装与使用(单节点)
IP : 192.168.4.111 1环 境: CentOS 6.6s Redis 版 本 : redis- - 3.0 0 (考虑到 Redis3.0 在集群和性能提升方面的特性,rc 版为正式版 ...
- LinearLayout学习笔记
线性布局分两种,分别是水平线性布局和垂直线性布局,对应设置为android:orientation="horizontal"/"vertical". Linea ...
- HOJ Recoup Traveling Expenses(最长递减子序列变形)
A person wants to travel around some places. The welfare in his company can cover some of the airfar ...
- HDU 1103 Flo's Restaurant(模拟+优先队列)
Flo's Restaurant Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Kafka Consumer接口
对于kafka的consumer接口,提供两种版本, high-level 一种high-level版本,比较简单不用关心offset, 会自动的读zookeeper中该Consumer grou ...