STM32-Flash-Speicher-Schreibhandbuch mit HAL

STM32-Flash-Speicher-Schreibhandbuch mit HAL

Wenn Sie sich für die Verwendung des STM32-Flash-Speichers mit dem Hardware Abstraction Layer (HAL) entschieden haben, enthält diese Anleitung die wesentlichen Schritte, die Sie für eine unkomplizierte Mikrocontroller-Programmierung benötigen. Das Einrichten des Hardware Abstraction Layer (HAL) ist recht einfach, wenn Sie den unten aufgeführten Beispielen folgen.

Wie kann ich mit HAL in den STM32-Flash-Speicher schreiben?

1. Bereiten Sie den Flash-Speicher zum Schreiben vor

  1. Erforderliche Headerdateien einbinden : Verwenden Sie #include "stm32f4xx_hal.h".
  2. Entsperren Sie den Flash-Speicher : Sie müssen den Flash-Speicher vor dem Schreiben entsperren, indem Sie Folgendes ausführen: HAL_FLASH_Unlock();.
  3. Löschen des Flash-Speichers : Um Daten zu schreiben, löschen Sie den Flash-Speichersektor, den Sie verwenden möchten. Dies wird mit der Funktion
    HAL_FLASHEx_Erase erreicht:

    • FLASH_EraseInitTypeDef EraseInitStruct; uint32_t SectorError; EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS; EraseInitStruct.Sector = FLASH_SECTOR_2; // Define the sector for erasure EraseInitStruct.NbSectors = 1; EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3; if (HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError)! = HAL_OK) { // Error handling }

2. Daten in den Flash-Speicher schreiben

  1. Verwenden Sie die Funktion HAL_FLASH_Program, um Daten in den Flash-Speicher einzugeben. Daten können in verschiedenen Formen geschrieben werden: Bytes, Halbwörter, Wörter oder Doppelwörter.
    • uint32_t Address = 0x08008000; // Initial address in flash memory uint32_t Data = 0x12345678; // Information to be saved if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, Data)! = HAL_OK) { // Handle the error }
  2. Sperren Sie den Flash-Speicher erneut : Nach Abschluss des Datenschreibvorgangs muss der Flash-Speicher unbedingt erneut gesperrt werden, um ein unbeabsichtigtes Überschreiben zu vermeiden: HAL_FLASH_Lock();.

Beispielcode für STM32-Flash-Speicher mit HAL

Nachfolgend finden Sie ein umfassendes Beispiel, in dem alle Verfahren zusammengefasst sind:


#include "stm32f4xx_hal.h"

void Write_Flash(uint32_t Address, uint32_t Data) {
// Flash entsperren
HAL_FLASH_Unlock();

// Den Flash-Sektor löschen
FLASH_EraseInitTypeDef EraseInitStruct;
uint32_t SectorError;

EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;
EraseInitStruct.Sector = FLASH_SECTOR_2;
EraseInitStruct.NbSectors = 1;
EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;

if (HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError)! = HAL_OK) {
// Fehler behandeln
}

// Flash-Speicher programmieren
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, Data)! = HAL_OK) {
// Fehler behandeln
}

// Flash sperren
HAL_FLASH_Lock();
}

int main(void) {
HAL_Init();
Write_Flash(0x08008000, 0x12345678);
while (1) {
// Hauptschleife
}
}

Diese Abbildung zeigt ausführlich das Entsperren, Löschen, Beschreiben und anschließende Sperren des Flash-Speichers eines STM32-Mikrocontrollers mit HAL-Funktionen. Wir hoffen, dass Ihnen diese Anleitung bei der Programmierung Ihres STM32-Flash-Speichers geholfen hat.

Wenn Sie auf Probleme stoßen, lesen Sie bitte unser Tutorial zur Behebung des Fehlers „HAL-INITIALISIERUNG FEHLGESCHLAGEN“.

Wenn Sie Fragen oder Feedback haben, können Sie unten gerne einen Kommentar hinterlassen.

Quelle & Bilder

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert