MKE06-KDS-PE使用IntFlash方法

單片機:MKE06Z
環境:KDS(Kinetis Design Studio)
目的:使用片內的Flash存儲若干數據,實現讀寫。

  1. KDS的PE中有兩個關於內部flash的組件:FLASH_LDD和IntFLASH,其中後者高級點,可以選擇後者。
  2. 然後雙擊組件,對其進行配置。可能需要配置FLASH_LDD組件中的頻率,這裏配置爲12M。
    有三種寫的方法,可以選擇後兩者。第一種不進行擦除,需要手動先擦除。
    擦除後爲0xFF。
    在這裏插入圖片描述
  3. 重要的選擇我們自己使用的Flash的地址,系統默認的程序段放在地址從0x410–0x1FFFF的範圍內,其實真正的程序佔不滿,這裏把m_text的size修改爲0x1F000,那麼供我們使用的範圍爲0x1F410~0x1FFF,大小爲3055個字節。(雙擊CPU組件,選擇Build options)
    也可以通過生成的.map文件(在Debug文件夾中)查看程序和變量的分佈情況。
    當然也可以不修改,修改了之後PE在生成代碼時,應該會在我們設定好的範圍內生成,這樣更加安全點。

在這裏插入圖片描述

測試代碼和結果如下。
uint8 u8data_read;
uint8 u8data_write = 0x33;

uint16 u16data_read;
uint16 u16data_write = 0x4455;

uint32 u32data_read;
uint32 u32data_write = 0x66778899;

byte data_read[50];
byte data_write[] = {0x00,0x0B,0xCC,0x40,0x01,0x40,0x01,0x5B,
0x13,0x79,0x00,0x11,0x50,0x7B,0x01,0x21,
0x5A,0x1C,0x79,0x00,0x39,0xC6,0x81,0x5B,
0x3A,0xC6,0x10,0x7b,0x02,0xF0,0x06,0xC1,
0x1B,0x00};

void test_flash(void)
{
IFsh1_SetByteFlash(0x1F800,u8data_write);
IFsh1_GetByteFlash(0x1F800,&u8data_read);

IFsh1_SetWordFlash(0x1F804,u16data_write);
IFsh1_GetWordFlash(0x1F804,&u16data_read);

IFsh1_SetLongFlash(0x1F808,u32data_write);
IFsh1_GetLongFlash(0x1F808,&u32data_read);

IFsh1_SetBlockFlash(&data_write[0],0x1F810,sizeof(data_write));
IFsh1_GetBlockFlash(0x1F810,&data_read[0],sizeof(data_write));
}

在這裏插入圖片描述

  1. 上面的8個函數,有的可能需要先使能再使用。點開左邊IntFlash組件,找到相應的函數,右鍵->Toggle Enable/Disable,然後重新生成代碼,編譯即可。
  2. 後面的SetBolckFlash有時會漏掉後面的兩個字節或是隻存儲了前8個字節,所以,最好用前面的3種方法,計算好了地址,然後可以一一對應的存儲。
  3. 最後可以在調試暫停後,打開Memery(Window菜單欄下),查看實際Flash的存儲情況,如上圖所示。
    完。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章