文章目录
stmflash.h
stmflash.h
如下:
#ifndef __STMFLASH_H__
#define __STMFLASH_H__
#include "sys.h"
#define STM32_FLASH_SIZE 512 /* 所选STM32的FLASH容量大小(单位为K) */
#define STM32_FLASH_WREN 1 /* 使能FLASH写入(0为不使能,1为使能) */
#define STM32_FLASH_BASE 0x08000000 /* STM32的FLASH起始地址 */
u16 STMFLASH_ReadHalfWord ( u32 faddr ); /* 读出半字 */
void STMFLASH_WriteLenByte ( u32 WriteAddr, u32 DataToWrite, u16 Len ); /* 指定地址开始写入指定长度的数据 */
u32 STMFLASH_ReadLenByte ( u32 ReadAddr, u16 Len ); /* 指定地址开始读取指定长度数据 */
void STMFLASH_Write ( u32 WriteAddr, u16 *pBuffer, u16 NumToWrite ); /* 从指定地址开始写入指定长度的数据 */
void STMFLASH_Read ( u32 ReadAddr, u16 *pBuffer, u16 NumToRead ); /* 从指定地址开始读出指定长度的数据 */
void Test_Write ( u32 WriteAddr, u16 WriteData ); /* 测试写入 */
#endif
stmflash.c
stmflash.c
如下:
#include "stmflash.h"
#include "delay.h"
#include "usart.h"
u16 STMFLASH_ReadHalfWord ( u32 faddr ) {
/* 读取指定地址的半字(16位数据),参数faddr是读地址(此地址必须为2的倍数) */
return * ( vu16 * ) faddr;
}
#if STM32_FLASH_WREN /* 如果使能了写 */
/* 不检查的写入。参数WriteAddr是起始地址,pBuffer是