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,人人有责!!!
        /************************************************************************/
阅读更多

没有更多推荐了,返回首页