STM32L0 內部EEPROM寫讀

2021-10-01 20:57:35 字數 979 閱讀 7273

stm32l0內部的eeprom寫操作由解鎖,寫入,加鎖過程組成,讀過程則無需解鎖。至於stm32l0內部的非易失空間區分為flash和eeprom,主要體現在用st-link等工具進行整片擦除時,只擦除flash的空間,eeprom的部分不會被擦除,如同外部eeprom晶元,mpu的**公升級不影響eeprom的內容。後面以內部eeprom的寫讀作為範例。

//stm32l031k6t6

#define eeprom_base_addr 0x08080000

#define eeprom_byte_size 0x03ff

基礎位元組寫函式

//byte write

void eeprom_write(uint16_t biasaddress, uint8_t *data, uint16_t len)

}

如果考慮到寫讀過程中,可以出現錯誤的情況,為了保證操作的正確性,需要採用校驗方式進行寫讀。

對於寫過程,需要將寫入的資料,讀回做比較。

對於讀過程,需要將兩次讀回的資料,進行比較。

如果比較正確,則操作完成。

如果錯誤,可重新進行寫或讀操作,並在設定的重新操作次數範圍內,進行重新操作識別,如果正確,則報告正確,如果錯誤,則報告錯誤。

設定重複校驗次數

#include #define ieeprom_check_num 2
帶操作校驗的寫函式

hal_statustypedef eeprom_write_w_check(uint16_t biasaddress, uint8_t *data, uint16_t len)

/* return the erase status */

return status;

}

上述的**,如果要用於stm32內部flash的操作,還需要增加頁擦除操作。

-end-

STM32L0實現發射空調紅外編碼功能

最近做乙個空調紅外的功能,上網搜了一下格力空調的紅外編碼,就按照編碼模擬時序。格力空調遙控器 yb0f2 紅外碼組成如下,按解碼順序排列 起始碼 s 35位資料碼 連線碼 c 32位資料碼 1 各種編碼的電平寬度 資料碼由 0 1 組成 0的電平寬度為 600us低電平 600us高電平,1的電平寬...

STM32HAL內部EEPROM讀寫L151

資料eeprom程式設計功能 擦除或程式設計的任何操作都應遵循以下步驟 呼叫 ref hal flashex dataeeprom unlock 函式啟用資料eeprom訪問 和flash程式擦除控制暫存器訪問。呼叫所需的功能來擦除或程式設計資料。呼叫 ref hal flashex dataeep...

STM32L0開發筆記 手動新增驅動檔案

我們可以通過stm32cubemx生成工程 但是如果我們的工程已經建立完畢了,或者說我們在原有的工程上,開始新的專案設計,此時又需加入新的驅動,該如何呢?本文 其解決方法。1 stm32cubemx的驅動路徑如下圖所示,我們希望加入什麼驅動,就直接將其對應的.c檔案加入到工程中即可。2 為了使該模組...