STM32CubeIDE programování
STM32CubeIDE programování
Zdravím
Nemáte někdo odkazy na YouTube na tutoriály v českém jazyce kde se mohu naučit s tímto pracovat například na kitu STM32F0DISCOVERY rozsvítit ledky ,obsluhovat user button nebo ADC převodník vypisovat po sériové lince Anglicky bohužel neumím díky všem
Nemáte někdo odkazy na YouTube na tutoriály v českém jazyce kde se mohu naučit s tímto pracovat například na kitu STM32F0DISCOVERY rozsvítit ledky ,obsluhovat user button nebo ADC převodník vypisovat po sériové lince Anglicky bohužel neumím díky všem
Re: STM32CubeIDE programování
Tak v češtině nevím na trubce o ničem. Ale vyšly tři docela povedené knihy (základní je tahle https://www.alza.cz/media/programujeme- ... 058927.htm)
Re: STM32CubeIDE programování
Tak jsem si ji koupil abych si udělal radost na ty Vánoce a po zběžném pročtení i když to je děláno na desku NUCLEO-L073RZ ale já mám desku STM32F0DISCOVERY i desku STM32 VL Discovery tak doufám že alespoň rozblikám LED a hlavně na ty vánoce zapomenu.O té knize jsem věděl už před tým dočetl jsem se o ní na MCU.CZ myslím od samotného autora který si tam dělal promo díky
Re: STM32CubeIDE programování
Já jsem si ji koupil už před časem, spíše ze zvědavosti, a docela mile mě překvapila. Tak jsem koupil i další dva díly, ale zatím nebyl čas a klid se do nich ponořit.
Z toho že nemáš přesně tu desku, si nemusíš dělat hlavu. Základní funkce v HAL knihovnách se jmenují stejně pro téměř všechny MCU a případný překlad z angličtiny velmi dobře zvládne třeba deepl.com. nebo i google translator.
Z toho že nemáš přesně tu desku, si nemusíš dělat hlavu. Základní funkce v HAL knihovnách se jmenují stejně pro téměř všechny MCU a případný překlad z angličtiny velmi dobře zvládne třeba deepl.com. nebo i google translator.
Re: STM32CubeIDE programování
Já nevím kde dělám chybu?
snažím se postupovat podle té knihy ,samozřejmě s ohledem na jinou desku v mém případě STM32-VL DISCOVERY trávím u toho 2 hodiny a pálím elektriku desktop žere, na notebooku nemám na SSD místa abych si mohl hrát celý den je to rozdíl v spotřebě desktop "pálí" 80 W a notebook do 30 W díkyKód: Vybrat vše
14:07:40 **** Incremental Build of configuration Debug for project Kniha_LED ****
make -j4 all
arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F100xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/main.o"
../Core/Src/main.c: In function 'main':
../Core/Src/main.c:96:22: error: 'PC8' undeclared (first use in this function)
96 | HAL_GPIO_WritePin(PC8,LD4[Blue], GPIO_PIN_RESET);
| ^~~
../Core/Src/main.c:96:22: note: each undeclared identifier is reported only once for each function it appears in
../Core/Src/main.c:96:26: error: 'LD4' undeclared (first use in this function)
96 | HAL_GPIO_WritePin(PC8,LD4[Blue], GPIO_PIN_RESET);
| ^~~
../Core/Src/main.c:96:30: error: 'Blue' undeclared (first use in this function)
96 | HAL_GPIO_WritePin(PC8,LD4[Blue], GPIO_PIN_RESET);
| ^~~~
make: *** [Core/Src/subdir.mk:34: Core/Src/main.o] Error 1
"make -j4 all" terminated with exit code 2. Build might be incomplete.
14:07:41 Build Failed. 4 errors, 0 warnings. (took 471ms)
Re: STM32CubeIDE programování
Když se podíváš na funkci HAL_GPIO_WritePin, tak je první argument adresa portu, druhý argument adresa pinu a pak požadovaný stav. Překladač ti nadává že PC8 není adresa portu a pak že máš nějakou nedeklarovanou proměnnou.
Tady je popis té funkce z dokumentace HALu.
Argumenty funkce:
GPIO_TypeDef *GPIOx tohle je ukazatel na proměnnou s názvem GPIOx a typu GPIO_TypeDef, což je vlastně adresa (32bitů) registru IO portu.
uint16_t GPIO_Pin je pozice IO pinu vyjádřená jako 16ti bitové číslo
GPIO_PinState PinState je výčtový typ GPIO_PinState s hodnotami GPIO_PIN_SET (jednička) nebo GPIO_PIN_RESET (nula)
Jestli chceš, tak ti mohu večer vygenerovat blikací projekt pro ten tvůj MCu a poslat a pak si ho jen naimportuješ a můžeš se v tom hrabat.
Tady je popis té funkce z dokumentace HALu.
Kód: Vybrat vše
/**
* @brief Sets or clears the selected data port bit.
*
* @note This function uses GPIOx_BSRR register to allow atomic read/modify
* accesses. In this way, there is no risk of an IRQ occurring between
* the read and the modify access.
*
* @param GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
* @param GPIO_Pin: specifies the port bit to be written.
* This parameter can be one of GPIO_PIN_x where x can be (0..15).
* @param PinState: specifies the value to be written to the selected bit.
* This parameter can be one of the GPIO_PinState enum values:
* @arg GPIO_PIN_RESET: to clear the port pin
* @arg GPIO_PIN_SET: to set the port pin
* @retval None
*/
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
GPIO_TypeDef *GPIOx tohle je ukazatel na proměnnou s názvem GPIOx a typu GPIO_TypeDef, což je vlastně adresa (32bitů) registru IO portu.
uint16_t GPIO_Pin je pozice IO pinu vyjádřená jako 16ti bitové číslo
GPIO_PinState PinState je výčtový typ GPIO_PinState s hodnotami GPIO_PIN_SET (jednička) nebo GPIO_PIN_RESET (nula)
Jestli chceš, tak ti mohu večer vygenerovat blikací projekt pro ten tvůj MCu a poslat a pak si ho jen naimportuješ a můžeš se v tom hrabat.
Re: STM32CubeIDE programování
Mě by stačilo poradit jak opravit ten řádek kde je ta chyba.Jinak by mě bodlo mnohem víc naimportovat ten projekt HDO http://1-2-8.net/mwva/mrazik/hdo/stm32f051_hdo.tgz do STM32CubeIDE díky
Re: STM32CubeIDE programování
Teď jsem si všimnul, jak máš ten pin pojmenovaný a to je ten problém. Identifikátrory pinů jsou použité jako názvy a platí pro ně vše co pro názvy identifikátorů v C. Nesmí začínat číslem, obsahuje malé a velké písmena a čísla a znak podtržítko.
Takže ne LD4[Blue] (to kompiler chápe jako identifikátor pole) ale třeba LD4_BLUE. Pak je název pinu LD4_BLUE_Pin a port má název LD4_BLUE_GPIO_Port.
Takže pro zápis na port to bude
nebo múžeš místo 0,1 použít GPIO_PIN_RESET , GPIO_PIN_SET
S tím importem ti nepomůžu, je to vytvořené úplně jinak než je struktura projektu v CubeIDE
Takže ne LD4[Blue] (to kompiler chápe jako identifikátor pole) ale třeba LD4_BLUE. Pak je název pinu LD4_BLUE_Pin a port má název LD4_BLUE_GPIO_Port.
Takže pro zápis na port to bude
Kód: Vybrat vše
HAL_GPIO_WritePin(LD4_BLUE_GPIO_Port, LD4_BLUE_Pin, 0); //pin do L
HAL_GPIO_WritePin(LD4_BLUE_GPIO_Port, LD4_BLUE_Pin, 1); //pin do H
S tím importem ti nepomůžu, je to vytvořené úplně jinak než je struktura projektu v CubeIDE
Re: STM32CubeIDE programování
Kód: Vybrat vše
21:19:36 **** Incremental Build of configuration Debug for project Kniha_LED ****
make -j4 all
arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F100xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/main.o"
../Core/Src/main.c: In function 'main':
../Core/Src/main.c:96:22: error: 'LD4_BLUE_GPIO_Port' undeclared (first use in this function); did you mean 'LD4_GPIO_Port'?
96 | HAL_GPIO_WritePin(LD4_BLUE_GPIO_Port, LD4_BLUE_Pin, 0); //pin do L
| ^~~~~~~~~~~~~~~~~~
| LD4_GPIO_Port
../Core/Src/main.c:96:22: note: each undeclared identifier is reported only once for each function it appears in
../Core/Src/main.c:96:42: error: 'LD4_BLUE_Pin' undeclared (first use in this function)
96 | HAL_GPIO_WritePin(LD4_BLUE_GPIO_Port, LD4_BLUE_Pin, 0); //pin do L
| ^~~~~~~~~~~~
make: *** [Core/Src/subdir.mk:34: Core/Src/main.o] Error 1
"make -j4 all" terminated with exit code 2. Build might be incomplete.
21:19:37 Build Failed. 3 errors, 0 warnings. (took 1s.454ms)
Re: STM32CubeIDE programování
A přejmenoval jsi si ty piny? Jestli ne, tak znovu v CubeIDE otevři CubeMX (poklepat na soubor konfigurace jmenoprojektu.ioc ), tam to změň a ulož (Ctrl+S). Pak zkus zase přeložit.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti