STM32F103 Flash操作代碼解析

        /************************************************************************/
        // !!!一定要記住!!!Flash壽命是有限的,別程序開着一直擦!!用到再擦
        // !!!愛護Flash人人有責
        // 必須先解鎖Flash
        uint64_t data = 0;
        // 一頁  1KB
        // stm32f103 Flash 建議使用頁地址爲:0x0807F000
        // 尋址範圍:0x0807F000 - 0x0807FFFF
        uint32_t *Address = (uint32_t*)0x0807F000;

        HAL_FLASH_Unlock();
        FLASH_PageErase((uint32_t)Address);
        // 爲防止出錯,需要延時等待下,當然一般不會出錯
        if(HAL_OK != FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)){
            // TODO: Error 操作
        }
        // 必須清楚標誌位
        CLEAR_BIT(FLASH->CR, FLASH_CR_PER);

        // 開始寫數據
        // 分爲三類寫法:FLASH_TYPEPROGRAM_HALFWORD
        //               FLASH_TYPEPROGRAM_WORD
        //               FLASH_TYPEPROGRAM_DOUBLEWORD
        // 關於詳細應用,自己腦補
        if(HAL_OK == HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,(uint32_t)Address,data)){
            HAL_GPIO_WritePin(LED1,LED_ON);
        }else{
            HAL_GPIO_WritePin(LED2,LED_ON);
        }
        // 搞完之後記得加個鎖撒
        HAL_FLASH_Lock();
        // Flash可以直接尋址哦,寫到該地址之後,直接尋址就ok了!
        if(*Address == data){
            HAL_GPIO_WritePin(LED3,LED_ON);
        }
        // 最後再說一句,愛護Flash,人人有責!!!
        /************************************************************************/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章