加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

STM32F103 Flash操作代码解析

发布时间:2020-12-15 19:56:17 所属栏目:百科 来源:网络整理
导读:/************************************************************************/ // !!!一定要记住!!!Flash寿命是有限的,别程序开着一直擦!!用到再擦 // !!!爱护Flash人人有责 // 必须先解锁Flash uint64_t data = 0 ; // 一页 1KB // 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,人人有责!!!
        /************************************************************************/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读