1. 《STM32 中文參考手冊》,需要查看芯片數據手冊,代碼起始地址一般都是0x8000 0000,這是存放整個項目代碼的起始地址
2. 編譯信息查看代碼大小,修改代碼后第一次編譯后會有這個提示信息
2.1 修改代碼后編譯,會有提示信息 KEIL,計算出來代碼總共 61076 Byte
2.2 如果什么都沒有改,直接編譯是沒有這個提示信息的
3. 定義Flash 保存數據的起始地址
0x08000000 是存放代碼的起始地址,我們保存的數據要和代碼分開,放在代碼區域后面,所以后面加了個80000, 比keil 編譯里面算出來的和要大將近2 萬個字節,預留量很大,后期增加代碼也基本不會覆蓋到這里來
#define PAGE_ADDR (0x08000000 + 80000)
4. Flash 讀接口, 從地址 PAGE_ADDR 處讀取num 個16位的數據,保存到數組data 里面
u8 MemReadByte(u16 *data, u16 num)
{u16 *temp_addr = (u16*)(PAGE_ADDR);while(num--){*data++= *temp_addr++;}return 1;
}
5. Flash 寫接口,將16 位的數組 寫入到Flash里面, 從地址PAGE_ADDR 開始寫,寫num 個數字
u8 MemWriteByte(u16 *data, u16 num)
{FLASH_Status temp_stat;u32 temp_addr = PAGE_ADDR;FLASH_Unlock();temp_stat = FLASH_ErasePage(PAGE_ADDR);if(temp_stat != FLASH_COMPLETE){FLASH_Lock();return 0;} while(num--){temp_stat = FLASH_ProgramHalfWord(temp_addr, *data);if(temp_stat != FLASH_COMPLETE){FLASH_Lock();return 0;}temp_addr += 2;data++;}FLASH_Lock();return 1;
}