Skip to content

Logger

De logger wordt gebruikt om cruciale informatie op te slaan over de staat van de STM32 en het programma.

Voor het opslaan wordt een bestand aangemaakt op de SD Kaart met de naam "logger.txt".

Voorbeeld

Kijk naar de volgende entry:

[00:00:09],0x00000005,0x00000007,0x00001A9E,0x00000633,0x000000F0

De volgende gegevens worden weergegeven:

  • [13:18:16]: Tijd van het bericht
  • 0x00000005: De instructiepointer
  • 0x00000007: shutdown_index op moment van loggen
  • 0x00001A9E: Interne temperatuur van de STM32
  • 0x00000633: Actuele voltage op moment van schrijven van de STM32
  • 0x000000F0: De hardware trigger die deze log genereerde (indien beschikbaar, anders 0)

Logbericht sturen

Om een bericht te loggen dient er een bericht op de queue gezet te worden. Volgende stukje code is een voorbeeld:

telemetry_t telemetry = {
    program_controller_registers->instruction_pointer,
    program_controller_registers->shutdown_instruction_pointer,
    is_get_temperature(),
    is_get_vref(),
    0,
};
if (osOK != osMessageQueuePut(loggerQueueHandle, &telemetry, 0, 0U))
{
printf("Error: Could not send message to loggerQueueHandle\n\r");
}

Zoals je kan zien wordt er eerst een bericht aangemaakt. Daarna wordt deze op de queue gezet (loggerQueueHandle). Voor de exacte details van het queue mechanisme kan je kijken bij ST.

Log bericht

Voor het versturen van een log bericht wordt gebruik gemaakt van een structure.

typedef struct
{
    uint16_t instruction_pointer;
    uint16_t shutdown_index_register;
    uint16_t temperature;
    uint16_t vrefint;
    uint8_t trigger;
} telemetry_t;

Hiervoor geld de volgende definitie:

Kolom Type Omschrijving
instruction_pointer uint32_t De huidige waare van de instruction_pointer
shutdown_index_register uint16_t De huidige waarde van de shutdown_index_register
temperature uint16_t De huidige temperatuur van de STM32 in graden celcius * 1000
vrefint uint16_t De huidige voltage van de STM32 in mV
trigger uint8_t Het event dat de log initieerde