Giỏ hàng
Danh mục sản phẩm

Lập Trình FLASH STM32

Đăng bởi Buiprohd@gmail.com ngày bình luận

Flash STM32 tương tự EEPROM  khi mất điện dữ liệu vẫn được lưu .

Các ứng dụng đơn giản có thể dùng flash thay các IC EEPROM

Mình giới thiệu 1 số hàm ghi đọc flash 

  void  write_flash_eeprom1 (  uint32_t  adress,uint32_t len)
   {
         unsigned char i=0;
         
                  FLASH_Unlock();
             FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | 
                   FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR); 
           FLASH_EraseSector(FLASH_Sector_7 , VoltageRange_3); 
        for(i=0; i<len; i++)
          {   
              I            WDG_ReloadCounter();
                         FLASH_ProgramWord(adress+ i*4,save_buff_eeprom[i]);
           
     
           }
               FLASH_Lock(); 

    }

uint32_t  Address0= 0x08060000; 

Trong đó với

 #define FLASH_Sector_7     ((uint16_t)0x0038) /*!< Sector Number 7 */

//VoltageRange_1        ((uint8_t)0x00)  /*!< Device operating range: 1.8V to 2.1V */
//VoltageRange_2        ((uint8_t)0x01)  /*!<Device operating range: 2.1V to 2.7V */
//VoltageRange_3        ((uint8_t)0x02)  /*!<Device operating range: 2.7V to 3.6V */
//VoltageRange_4        ((uint8_t)0x03)  /*!<Device operating range: 2.7V to 3.6V +  

VD: write_flash_eeprom1(Address0,16);      

void read_flash_eeprom( uint32_t   Address  ,uint32_t   lenght  )
    {
         unsigned long i5=0;
         __IO  uint32_t* ptr;
         ptr = (( uint32_t*)Address );
         for(i5=0; i5< lenght  ; i5++)
             {      IWDG_ReloadCounter();
                read_buff_eeprom[i5] = *ptr;
                ptr++;   //ptr+4 long 4byte
          
               }
       }

read_flash_eeprom(Address0,16);


Cũ hơn Mới hơn