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

  • 相关阅读:
    (40)C#windows服务控制
    (6)C#事务处理
    (1)sqlite基础
    bzoj 2456 mode
    bzoj 2763 [JLOI2011]飞行路线
    bzoj1010[HNOI2008] 玩具装箱toy
    bzoj1034 [ZJOI2008]泡泡堂BNB
    [bzoj1059] [ZJOI2007] 矩阵游戏 (二分图匹配)
    [bzoj1066] [SCOI2007] 蜥蜴
    bzoj1072 [SCOI2007]排列perm
  • 原文地址:https://www.cnblogs.com/hitzzq/p/15495129.html
Copyright © 2011-2022 走看看