1. 《STM32 中文參考手冊》,需要查看芯片數(shù)據(jù)手冊,代碼起始地址一般都是0x8000 0000,這是存放整個項目代碼的起始地址
2. 編譯信息查看代碼大小,修改代碼后第一次編譯后會有這個提示信息
2.1 修改代碼后編譯,會有提示信息 KEIL,計算出來代碼總共 61076 Byte
2.2 如果什么都沒有改,直接編譯是沒有這個提示信息的
3. 定義Flash 保存數(shù)據(jù)的起始地址
0x08000000 是存放代碼的起始地址,我們保存的數(shù)據(jù)要和代碼分開,放在代碼區(qū)域后面,所以后面加了個80000, 比keil 編譯里面算出來的和要大將近2 萬個字節(jié),預留量很大,后期增加代碼也基本不會覆蓋到這里來
#define PAGE_ADDR (0x08000000 + 80000)
4. Flash 讀接口, 從地址 PAGE_ADDR 處讀取num 個16位的數(shù)據(jù),保存到數(shù)組data 里面
u8 MemReadByte(u16 *data, u16 num)
{
u16 *temp_addr = (u16*)(PAGE_ADDR);
while(num--)
{
*data++= *temp_addr++;
}
return 1;
}
5. Flash 寫接口,將16 位的數(shù)組 寫入到Flash里面, 從地址PAGE_ADDR 開始寫,寫num 個數(shù)字
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;
}
6. keil 選擇芯片型號
文章來源:http://www.zghlxwxcb.cn/news/detail-654408.html
7. 在keil 里面查看對應芯片的Flash 大小
文章來源地址http://www.zghlxwxcb.cn/news/detail-654408.html
到了這里,關(guān)于STM32 FLASH 讀寫數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!