Stm32f0でEEPROMをエミュレートしようとしています。 STMによって提供される アプリケーションノート があります。
サンプル_main.c
_では、
_int main(void)
{
/*!< At this stage the microcontroller clock setting is already configured,
this is done through SystemInit() function which is called from startup
file (startup_stm32f0xx.s) before to branch to application main.
To reconfigure the default setting of SystemInit() function, refer to
system_stm32f0xx.c file
*/
/* Unlock the Flash Program Erase controller */
FLASH_Unlock();
/* EEPROM Init */
EE_Init();
/* --- Store successively many values of the three variables in the EEPROM ---*/
/* Store 0x1000 values of Variable1 in EEPROM */
for (VarValue = 1; VarValue <= 0x64; VarValue++)
{
EE_WriteVariable(VirtAddVarTab[0], VarValue);
}
/* read the last stored variables data*/
EE_ReadVariable(VirtAddVarTab[0], &VarDataTab[0]);
/* Store 0x2000 values of Variable2 in EEPROM */
for (VarValue = 1; VarValue <= 0xC8; VarValue++)
{
EE_WriteVariable(VirtAddVarTab[1], VarValue);
}
/* read the last stored variables data*/
EE_ReadVariable(VirtAddVarTab[0], &VarDataTab[0]);
EE_ReadVariable(VirtAddVarTab[1], &VarDataTab[1]);
/* Store 0x3000 values of Variable3 in EEPROM */
for (VarValue = 1; VarValue <= 0x1C2; VarValue++)
{
EE_WriteVariable(VirtAddVarTab[2], VarValue);
}
/* read the last stored variables data*/
EE_ReadVariable(VirtAddVarTab[0], &VarDataTab[0]);
EE_ReadVariable(VirtAddVarTab[1], &VarDataTab[1]);
EE_ReadVariable(VirtAddVarTab[2], &VarDataTab[2]);
while (1);
}
_
Flash_Unlock()
は、STM標準ペリフェラルライブラリで使用される関数です。ただし、HALドライバーを使用するコードを自動生成するCubeMXを使用しています。 EEPROM_エミュレーションAPIを使用する前にFlash_Unlock()
を呼び出す必要がありますか?はいの場合、Flash_Unlock()
を呼び出すのに相当するHALは何ですか? EEPROMエミュレーションを使用するためにCubeMXで行う特別な構成設定はありますか?
ST Microelectronicsは、HALドライバーを使用したサンプルコードを提供しました。問題は、彼らのドキュメントがいたるところにあり、グーグルで正しいページが表示されない可能性があることです。
これはあなたにとって正しい document です。
「EEPROM_Emulation」を検索します。サンプルコードは、NUCLEO -F091RCファームウェアの例の下に提供されています。サンプルコードはあなたの質問に答えるはずです。