stm32 讀寫內部Flash

stm32的FLASH分爲主存儲塊和信息塊。主存儲塊用於保存具體的程序代碼和用戶數據,信息塊用於負責由stm32出廠是放置2KB的啓動程序(Bootloader)和512B的用戶配置信息區。主存儲塊是以頁爲單位劃分的,一頁大小爲1KB。範圍爲從地址0x08000000開始的128KB內。

對Flash 的寫入操作要 “先擦除後寫入”的原則;stm32的內置flash 編程操作都是以頁爲單位寫入的,而寫入的操作必須要以16位半字寬度數據位單位,允許跨頁寫,寫入非16位數據時將導致stm32內部總線錯誤。


void testFlash()
{

    int count=0;
    u16 data[5]={0x0401,0x0502,0x0003,0x0004,0x0005};
    u32 base=0x8000000+1024*254; //保存自定義數據的起始地址 

    printf("start test flash\n");
    FLASH_Unlock();

    FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);


    FLASH_ErasePage(base);

    while(count < 5)
    {
        FLASH_ProgramHalfWord((base +count*2),data[count]);  //flash  爲一個字節存儲,16位數據必須地址加2
        count++;
    }
    FLASH_Lock();
    count = 0;
    printf("\r\n The Five Data Is : \r\n");

    while(count < 5)
    {
        printf("\r 0X%x \r",*(u16 *)(base + count*2));      //讀取方法
        count++;

    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章