zoukankan      html  css  js  c++  java
  • STM32 Flash读写

    知道了Flash读写的特性就知道如何编程了:

    1.flash读,可以读到任意一个字节的值

    2.flash写,最少写入半字,即2个字节,最多写入DOUBLEWORD即8个字节。

    3.flash擦除,只能擦除整页,或者整个mass(block/sector)

    FLASH ADDRESS = 0x0800 0000

    uint16_t  FLUSH_BUFF[512];      1 page = 1024 Byte

    STMFLASH_Read(FLASH_ADDRESS, FLASH_BUFF,1 page = 1024);

    FLUSH_BUFF[0]=0x0102,FLUSH_BUFF[1]=0x0304;
    FLUSH_BUFF = 0x200000460
    0x200000460: 0x01
    0x200000461: 0x02
    0x200000462: 0x03
    0x200000463: 0x04
    u32 STMFLASH_Read(u32 readAddr, void* buffer, u32 size)
    {
      u8* pbuf8= (u8*)buffer;(buffer = FLUSH_BUFF)
    //buffer 传过来的本来是uint16_t的数组,强制转换为uint8_t之后 *(pbuf8+1)是0x01还是0x03????? STM32 是小端


    pbuf8 += 2;
      *(u16*)pbuf8 = *(u16*)readAddr;
    }
     
    u32 STMFLASH_Read(u32 readAddr, void* buffer, u32 size)
    {
        u32 i = 0;
    
        u32 nRead = size;
        u8* pbuf8= (u8*)buffer;
        if(!buffer||readAddr < STMFLASH_APPLICATION_ADDR || (readAddr + size > STMFLASH_END_ADDR)) {
            printf("out range................................................... 
    ");
    //        LOG_INFO("ERROR: reading from illegal internal flash address: 0x%lx 
    ", ReadAddr);
            return 0;
        }
    
    
        while((nRead >= 2) && readAddr <= (STMFLASH_END_ADDR-2)) {
    //        pbuf8[i] = STMFLASH_ReadByte(ReadAddr);
    //        ReadAddr++;
            *(u16*)pbuf8 = *(u16*)readAddr;
    
            printf("addr:%x~~~~%x 
    ",readAddr,*(u16*)readAddr);
            readAddr += 2;
            pbuf8 += 2;
            nRead -= 2;
        }
    
    
        return size;
    }

    参考文章:

    1.STM32F1系列HAL库读写内部FLASHhttps://blog.csdn.net/qq153471503/article/details/105989078

  • 相关阅读:
    svn提交失败 :“svn: E200007: Commit failed”
    POI导入excel文件2
    poi导出excel
    zookeeper的安装及共享锁的应用
    微信支付---统一下单
    Socket通信的简单例子
    HTML CSS + DIV实现整体布局
    很认真的聊一聊程序员的自我修养
    POI上传,导入excel文件到服务器1
    时序数据库技术体系 – InfluxDB 多维查询之倒排索引
  • 原文地址:https://www.cnblogs.com/hitzzq/p/15495129.html
Copyright © 2011-2022 走看看