Category: C/C++ programmering

Mine sider

C++ String – Examples

Find first word in sentence –  std::string firstWord = s1.substr(0, s1.find(” “));


October 11, 2018 0

STM32F7 – HAL – Interrupt handling

Når man bruger CubeMx til at lave den basale kode får man automatisk genereret en interrupt handler for External Interrupts, som vist nedenfor.   /** * @brief This function handles EXTI line0 interrupt. */ void EXTI0_IRQHandler(void) { /* USER CODE BEGIN EXTI0_IRQn 0 */ /* USER CODE END EXTI0_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); /* USER CODE…
Read more


April 22, 2018 0

C++ – Hvornår skal man bruge unordered map

C++ fik med C++11 versionen en “std::unordered_map” STL container, men hvornår skal man bruge “std::unordered_map” frem for “std::map”. Jeg har samlet en lille oversigt for hvornår, man skal hvad. Brug “std::map” når:  Du ønsker lav memory forbrug std::unordered_map bruger noget ekstra memory, så hvis der er ønske om at bruge mindst memory skal std:map vælges. Hvis…
Read more


April 13, 2018 0

UNI/O med STM32F7 og FreeRtos

For at kunne kommunikere med en UNI/O eeprom med en STM32F7, som kører FreeRtos, har jeg lavet et lille test program. Jeg har taget udgangspunkt i et eksempel skrevet af Stephen Early (Thanks Steve 🙂 – https://github.com/martmaiste/UNIO/blob/master/UNIO.h )   /* Copyright (C) 2011 by Stephen Early <steve@greenend.org.uk> Permission is hereby granted, free of charge, to any…
Read more


March 11, 2018 0

FreeRtos – Find ud af om man er i handler mode

I FreeRtos er det irriterende, at man skal bruge to forskellige måder til at ligge noget i en kø, alt efter om man er i en taks eller i ISR. Hvis man bruger CMSIS_OS sammen med FreeRtos, findes der faktisk en funktion, der kan fortælle om man er i ISR eller TASK. Desværre er den…
Read more


March 3, 2018 0

ST32 og I2C write + read i en transaction

Når man skal lave en I2C læsning med ST findes der HAL funktioner til dette. Problemet med standard funktionerne er, at de færdiggør hver læsning og skrivnings transaction før næste transaction kan udføres. Nogle peripherals kræver, at man opsætter register adressen før man laver læsningen. Samtidig kræver nogle peripherals, at det sker i en transaction. Heldigvis…
Read more


December 3, 2017 0

Lav et Ethernet loopback med FreeRtos ogLWIP

Vores produkt har et Ethernet interface, og vi har et ønske om at kunne lave en selftest af dette interface ved, at lave et loopback i PHY’en, så sende en pakke på interfacet, og checke at vi modtager den samme pakke. Vi bruger LWIP og FreeRtos, og nedenstående kode viser hvordan en sådan selftest kan…
Read more


November 26, 2017 0

Cache coherence problem med STM Cortex M7 processor

Selvom jeg har arbejdet med embedded systemer i mange år, kan jeg stadig støde på ting jeg ikke har prøvet før. Et problem jeg ikke havde stødt på før er et problem, der hedder ”cache coherence”, og som jeg lige har brugt laaaang tid på. Problemet viste sig ved, at mit system pludselig begyndte at…
Read more


November 18, 2017 0

Hvorfor bruge c++ casting ala static_cast frem for ANSI C casting

3 grunde til at bruge C++ casting C++ casting bliver checket af compileren. C casting kan ikke checkes, og kan fejle under runtime. C++ casting er nemme at finde frem fra C casting (specielt vigtig hvis man skal noget, der er scriptet). C++ har 4 typer casting, der bedre kan fortælle nøjagtigt hvad der er…
Read more


October 10, 2017 0

Konvertering af binær data til C++ array

I dag skulle jeg lave noget kode til at lave voice prompts. Alle voice lyd filerne skal ligge som FAT16 format i en ekstern flash. Desværre er hardware’en ikke færdig endnu, så jeg har ikke den faktiske flash. For at teste mit FAT16 system bestemte jeg mig for, at havde mit “fil system” som et…
Read more


October 3, 2017 0