#include "includes.h" ////读取指定地址的半字(16位数据) ////faddr:读地址(此地址必须为2的倍数!!) ////返回值:对应数据. uint16_t STMFLASH_ReadHalfWord(uint32_t faddr) { return *(volatile uint16_t*)faddr; } ////从指定地址开始读出指定长度的数据 ////ReadAddr:起始地址 ////pBuffer:数据指针 ////NumToWrite:半字(16位)数 void STMFLASH_Read(uint32_t ReadAddr,uint16_t *pBuffer,uint16_t NumToRead) { uint16_t i; for(i=0;i=FLASH_End_Addr) return;//非法地址 if(WriteAddr&0x0000003FF)return;//非页首地址 status=FLASH_ErasePage(WriteAddr);//擦除这个页 if(status!=FLASH_COMPLETE){ return; } /* 写入FLASH */ for(i = 0; i < DataLen; i+=2) { //数据8位融合为16位 datas = (((unsigned short)pData[i+1])<<8) + ((unsigned short)pData[i]); FLASH_ProgramHalfWord((WriteAddr+i),datas); } /* 上锁 */ FLASH_Lock(); } /********************************************************************************************************** ************************************************************************************************************/ void ReadFlashData(unsigned long ReadAddr,unsigned char *pData,unsigned short DataLen) { unsigned int i,j; unsigned short temp; j=0; for(i=0;i>8)&0xff; } }