• STM32F0的flash读写


    ////觉得好的点下推荐,感恩啦!

    flash大小64k Rom+8k Ram的大小,stm32f051有64k Rom,总的分为 64页,一页1024byte ,在flash的Rom里面写数据掉电保存,相当于W25q80

    uint32_t FLASH_START_ADDR = 0x08000000+1024*63; //1024   一页大小1k  ,   63   flash有64K在最后一页首地址开始写
    /*****************************************************************************
    功能:flash写

    输入:addr:写地址 0-一页大小  data :4字节数据

    返回:无
    ******************************************************************************/
    void WriteFlash(uint32_t addr,uint32_t data)
    {
    FLASH_Unlock(); //½âËøFLASH±à³Ì²Á³ý¿ØÖÆÆ÷
    FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPERR);//Çå³ý±ê־λ
    FLASH_ErasePage(FLASH_START_ADDR); //²Á³ýÖ¸¶¨µØÖ·Ò³
    FLASH_ProgramWord(FLASH_START_ADDR+(addr*4),data); //´ÓÖ¸¶¨Ò³µÄ0µØÖ·¿ªÊ¼Ð´
    FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPERR);//Çå³ý±ê־λ
    FLASH_Lock(); //Ëø¶¨FLASH±à³Ì²Á³ý¿ØÖÆÆ÷
    }

    /*****************************************************************************
    功能:读flash

    输入:读地址

    返回:读到的4字节数据
    ******************************************************************************/
    uint32_t ReadFlash(uint16_t addr)
    {
    uint32_t value;
    value = *(uint32_t*)(FLASH_START_ADDR+(addr*4));
    return value;
    }

  • 相关阅读:
    [YTU]_2417 C语言习题 字符串长度
    最小生成树学习笔记
    后缀数组学习笔记
    网络流的几个小优化
    面向对象
    Manacher(马拉车)学习笔记
    EXKMP学习笔记QAQ
    GDOI DAY1游记
    GDOI--DAY2 游记
    caioj:1348: [NOIP普及组2012]质因数分解 C++
  • 原文地址:https://www.cnblogs.com/luckytimor/p/5403196.html
Copyright © 2020-2023  润新知