Flash,全名叫做Flash EEPROM Memory,即平时所说的“闪存”,它结合了ROM和RAM的长处,不仅可以反复擦除,还可以快速读取数据,STM32运行的程序其实就是存放在Flash当中,但是由于STM32的Flash一般1M左右,只能存储程序大小的数据,所以往往需要外扩Flash来存储数据,比如LCD界面当中的汉字字库,以及文件系统中读取的文件内容。
对FLASH 进行写操作前必须先解锁,解锁操作也就是必须在 FLASH_KEYR 寄存器写入特定的序列,固件库函数实现很简单:只需要直接调用 FLASH_Unlock();即可。 锁定函数:void FLASH_Lock(void); 有解锁当然就有上锁,为了保护Flash,读写和擦除全部需要的Flash后需要上锁,只需要调用: FLASH_Lock(); 写操作函数: 固件库...
void FLASH_OB_BootConfig(uint8_t OB_BOOT); FLASH_Status FLASH_OB_Launch(void); uint8_t FLASH_OB_GetUser(void); uint16_t FLASH_OB_GetWRP(void); uint16_t FLASH_OB_GetWRP1(void); uint16_t FLASH_OB_GetPCROP(void); uint16_t FLASH_OB_GetPCROP1(void); FlagStatus FLASH_OB_GetRDP...
unsigned char FLASH_WRITE(unsigned short int * memory_data) { static int t; count = 0; /*Enables or disables the Internal High Speed oscillator (HSI).*/ RCC_HSICmd(ENABLE); /*打开FLASH可擦除控制器*/ FLASH_Unlock(); /*将flash三个标志位全清*/ FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FL...
ToWrite; dataIndex++) { HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, startAddress + dataIndex * 2, writeData[dataIndex]); } FLASH_Lock(); // 上锁写保护 } //从指定地址开始写入多个数据(32位) void FLASH_WriteWordData(uint32_t startAddress, uint32_t *writeData, uint16_t countToWrite)...
STM32L476RG最后一个字母G,代表flash是1M空间的,所以在该章节找到1M的表,如下2张图,本教程可以读写的空间属于“Main Memory”,“Information block”用作system memory、otp、Option Bytes。 可以看到1M,分为bank1(0-255page,每个page 2kbytes)与bank2(256-511page,每个page 2kbytes),一共512个page,每个page...
u16STMFLASH_ReadHalfWord(u32 faddr){return*(vu16*)faddr;} 从指定地址开始读出指定长度的数据 LReadAddr:起始地址 pBuffer:数据指针 NumToWrite:半字(16位)数 voidSTMFLASH_Read(u32 ReadAddr,u16*pBuffer,u16 NumToRead){u16 i;for(i=0;i<NumToRead;i++){pBuffer[i]=STMFLASH_ReadHalfWord(Read...
*函数名称:Med_Flash_Read *函数功能:从指定地址开始写入指定长度的数据 *输入参数:WriteAddr:写入起始地址;pBuffer:数据指针; NumToRead:写入(半字)数 *返回值:无 *备 注:对内部Flash的操作是以半字为单位,所以读写地址必须是2的倍数 *=== */// 根据中文参考手册,大容量产品的每一页是2K字节#ifSTM32_...
On my stm32 mcu there is no eeprom. So, I am using internal flash to save one byte user data to retain it between power cycles.I am doing it the following way, Add Data section in memory in the linker script MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 8K ...
FLASH_STATUS=FLASH_WRITE_OK;returnFLASH_STATUS; }/**--- * @brief FLASH读出函数 * @param memory_data:输出存放地址,n 输出个数 * @retval 函数有无执行完毕 ---*/unsignedcharFLASH_READ(unsignedshortint* memory_data,unsignedshortintn) { count=0;...