STM32HAL內部EEPROM讀寫L151

2021-09-25 19:37:36 字數 2025 閱讀 6056

#####資料eeprom程式設計功能#####
[..]擦除或程式設計的任何操作都應遵循以下步驟:

(#)呼叫@ref hal_flashex_dataeeprom_unlock()函式啟用資料eeprom訪問

和flash程式擦除控制暫存器訪問。

(#)呼叫所需的功能來擦除或程式設計資料。

(#)呼叫@ref hal_flashex_dataeeprom_lock()來禁用資料eeprom訪問

和flash程式擦除控制暫存器訪問(推薦

保護data_eeprom免受可能的意外操作)。

實驗總結,只需要三步

解鎖寫入資料(擦除也是寫入資料只不過寫的是0x00)

上鎖(建議上鎖,其實沒啥用,不用問題不是很大)

void program_eeprom(void)

實際執行效果

擦除也是寫入

/**

* @brief erase a word in data memory.

* @param address specifies the address to be erased.

* @param typeerase indicate the way to erase at a specified address.

* this parameter can be a value of @ref flash_type_program

* @note to correctly run this function, the @ref hal_flashex_dataeeprom_unlock() function

* must be called before.

* call the @ref hal_flashex_dataeeprom_lock() to the data eeprom access

* and flash program erase control register access(recommended to protect

* the data_eeprom against possible unwanted operation).

* @retval hal_statustypedef hal status

*/hal_statustypedef hal_flashex_dataeeprom_erase(uint32_t typeerase, uint32_t address)

if(typeerase == flash_typeerasedata_halfword)

if(typeerase == flash_typeerasedata_byte)

status = flash_waitforlastoperation(flash_timeout_value);

}

/* return the erase status */

return status;

}

不懂的可以搜尋指標強制型別轉換學習一下。

讀取資料參照上面擦寫部分,只需要反過來就好了。

data_8bit = *(__io uint8_t *) address;

data_16bit = *(__io uint16_t *) address;

data_32bit = *(__io uint32_t *) address;

答:這部分除非是進行特意擦除這個部分才會失去資料,其他方式均不會影響這部分的資料,比如,燒錄程式,清空程式。

flash也可以用一樣的函式嗎?

個人覺得不行,flash是按頁分的,eeprom可以按位元組編輯,所以肯定有區別。(未進行實驗,也沒什麼意義)

STM32HAL 紅外遙控(NEC)

整理了乙個nec協議的紅外程式,nec協議,物理環境為f103原子戰艦v3,使用stm32cubemx生成初始程式。定時器配置72分頻,9999裝載值 10ms nec協議 資料格式 同步碼頭 位址碼 位址反碼 按鍵碼 按鍵反碼 lsb先行 同步碼頭 9ms低電平 4.5ms高電平 連發碼 9ms低...

STM32 HAL庫學習筆記

1 系統時鐘 一般用stm32cube生成,使用者只需要會用stm32cube就行。2 gpio輸出void led gpio config void 3 gpio輸入void key gpio config void 4 外部中斷void exti key config void void ext...

stm32 HAL 低功耗模式

最近學習了stm32的低功耗模式,發現很多可以學習的地方,微控制器功耗要低才能續航很久 低功耗模式 如果是中斷就先執行中斷的程式,然後執行上次停下的 這種模式感覺只有在等待中斷時候才有用,比如sleep 1 不過功耗不是降太多 只有靠外部中斷喚醒或者rtc定時器和看門狗喚醒 因為rtc的鬧鐘中斷是接...