×
单片机 > 单片机程序设计 > 详情

STM32F103 Flash操作代码解析

发布时间:2020-05-19 发布时间:
|

        /************************************************************************/

        // !!!一定要记住!!!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,人人有责!!!

        /************************************************************************/




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
用PIC16F627制作的可调倒计时提醒器