C++ String – Examples
Find first word in sentence – std::string firstWord = s1.substr(0, s1.find(” “));
Find first word in sentence – std::string firstWord = s1.substr(0, s1.find(” “));
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
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
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
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
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
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
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
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
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