新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 分享STM32 FLASH 擦除(以及防止誤擦除程序代碼)、寫入

        分享STM32 FLASH 擦除(以及防止誤擦除程序代碼)、寫入

        作者: 時間:2016-12-01 來源:網絡 收藏


        三、FLASH寫入
          FLASH的寫入地址必須是偶數(FLASH機制決定的FLASH寫入的時候只能是偶數地址寫入,必須寫入半字或字,也就是2個字節或是4字節的內容)




        四、FLASH 讀取方法
          *(uint32_t *)0x8000000;//讀一個字
          *(uint8_t *)0x8000000;//讀一個字節;
          *(uint16_t *)0x8000000;//讀半字;
          舉例:
          uint8_t data;
          data= *(uint8_t *)0x8000000;//就是讀取FLASH中地址0x8000000處的數據
        五、幾個有用的子函數
        /*
        功能:向指定地址寫入數據
        參數說明:addr 寫入的FLASH頁的地址
        p 被寫入變量的地址(數組中的必須是uint8_t類型,元素個數必須是偶數)
        Byte_Num 被寫入變量的字節數(必須是偶數)
        */
          void FLASH_WriteByte(uint32_t addr , uint8_t *p , uint16_t Byte_Num)
          {
           uint32_t HalfWord;
           Byte_Num = Byte_Num/2;
           FLASH_Unlock();
           FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
           FLASH_ErasePage(addr);
           while(Byte_Num --)
           {
           HalfWord=*(p++);
           HalfWord|=*(p++)<<8;
           FLASH_ProgramHalfWord(addr, HalfWord);
           addr += 2;
           }
           FLASH_Lock();
          }
          例:
          uint8_t data[100];
          FLASH_WriteByte(0x8000000 , data , 100);/*數組data的數據被寫入FLASH中*/
        /*
        功能:從指定地址讀取數據
        參數說明:addr 從FLASH中讀取的地址
        p 讀取后要存入變量的地址(數組中的必須是uint8_t類型)
        Byte_Num 要讀出的字節數
        */
          void FLASH_ReadByte(uint32_t addr , uint8_t *p , uint16_t Byte_Num)
          {
          while(Byte_Num--)
          {
           *(p++)=*((uint8_t*)addr++);
          }
          }
          例:
          uint8_t data[101];
          FLASH_ReadByte(0x8000001 ,data, 101);/*FLASH中的數據被讀入數組data中*/

        上一頁 1 2 下一頁

        關鍵詞: STM32FLASH擦除寫

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 柘城县| 平塘县| 新化县| 阿城市| 区。| 邢台市| 木里| 新建县| 罗甸县| 建瓯市| 加查县| 阜平县| 祁连县| 林芝县| 平湖市| 滦南县| 加查县| 南宁市| 惠安县| 肥西县| 龙胜| 广元市| 宿州市| 长子县| 永善县| 洛宁县| 扎囊县| 北宁市| 宜兰市| 苍南县| 永善县| 关岭| 龙游县| 汝南县| 福贡县| 沙河市| 南宫市| 土默特右旗| 广宁县| 张家界市| 宣汉县|