Stránka 4 z 4

Re: STM32CubeIDE programování

Napsal: 24 pro 2022, 17:54
od ondraN
To co se posílá přes sériový port, je typ uint8_t (byte). Takže když chceš poslat číselnou hodnotu jako textové vyjádření, musíš jí nejdříve zkonvertovat na textový řetězec. Použij na to funkci sprintf() pro formátovaný výstup do textového řetězce. Taky je dobré si nastavit používání novějších knihoven. Nastaveni je v CubeIDE v Project--Properties a dál podle obrázku, ty dvě dole
Corel.jpg

Re: STM32CubeIDE programování

Napsal: 25 pro 2022, 11:39
od visk52
ondraN píše:
24 pro 2022, 17:54
Použij na to funkci sprintf() pro formátovaný výstup do textového řetězce.
Jaká je správná syntaxe ? díky

Re: STM32CubeIDE programování

Napsal: 25 pro 2022, 18:48
od ondraN
https://cplusplus.com/reference/cstdio/ ... kw=sprintf
Navíc musíš includovat modul stdio

Kód: Vybrat vše

#include	stdio.h

Re: STM32CubeIDE programování

Napsal: 26 pro 2022, 07:55
od ondraN
Tady je příklad

Kód: Vybrat vše

uint8_t	txtLen;
char	text[20];
.........

		txtLen=sprintf(text,"     FW version: %d.%d \n", VERSION, SUBVERSION);
		HAL_UART_Transmit(huart, (uint8_t*)text, txtLen, 50);

Re: STM32CubeIDE programování

Napsal: 26 pro 2022, 16:04
od visk52
Nejde mi to proč ? :evil: :evil:
ADC UART.jpg

Kód: Vybrat vše

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
  uint16_t readValue;

/* USER CODE END 0 */
díky

Re: STM32CubeIDE programování

Napsal: 26 pro 2022, 18:02
od ondraN

Kód: Vybrat vše

n=sprintf(buffer, "Zmerena hodnota = %d \n", readValue);
HAL_UART_Transmit(&huart1, (uint8_t*) buffer, n, 50);
V n bude po provedení sprintf() délka řetězce a v buffer bude textový řetězec. Protože je buffer typu char a HAL_UART_Transmit vyžaduje uint8_t, je třeba ten buffer přetypovat, ta hvězdička je tam kvůli tomu, že se přetypovává pointer.
U sprintf je ve formátovacím řetězci tzv. placeholder %d , to znamená že na tom místě se dosadí hodnota readValue a prezentuje se jako dekadický celočíselný typ.
Hele, nic proti nadšení, ale měl bys prostudovat céčko, protože tohle jsou poměrně základní věci a bez těch se v tom utopíš. Třeba sprintf je vlastně printf přesměrovaný do řetězce, podívej se na možnosti formátovacího řetězce a na placeholdery. Taky se zaměř na práci s pointery, protože to je tam používané na každém kroku.

Re: STM32CubeIDE programování

Napsal: 26 pro 2022, 19:55
od visk52
V letech kolik mě je tak se těžko něco učí jsem starý kmet :D já jsem vyrůstal na pascalu , pro mně něco ""Zmerena hodnota = %d \n """ tak je to řetězec.

Re: STM32CubeIDE programování

Napsal: 26 pro 2022, 21:14
od ondraN
No, já taky už to mám za pár, takže vím jaká je to fuška, něco dostat do palice. Zkus si stáhnout tohle
https://ulozto.cz/file/Wdf32QKWFFwA/tst ... 9IDmp2MN==
https://ulozto.cz/file/dPxiLb4MwPsz/tst ... WDFwqxBN==
Je to fakt dobá kniha.

Re: STM32CubeIDE programování

Napsal: 27 pro 2022, 12:23
od visk52
Konečně nějaký výsledek
ADC-UART.jpg
díky