STM32CubeIDE programování

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

STM32CubeIDE programování

Příspěvek od visk52 » 20 pro 2022, 12:18

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
STM32CubeIDE.jpg
Anglicky bohužel neumím :o díky všem

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: STM32CubeIDE programování

Příspěvek od ondraN » 20 pro 2022, 14:32

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)

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: STM32CubeIDE programování

Příspěvek od visk52 » 20 pro 2022, 16:52

Tak jsem si ji koupil abych si udělal radost na ty Vánoce :D 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 :D 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

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: STM32CubeIDE programování

Příspěvek od ondraN » 20 pro 2022, 17:37

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.

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: STM32CubeIDE programování

Příspěvek od visk52 » 21 pro 2022, 14:22

Já nevím kde dělám chybu?
kniha.jpg
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íky

Kó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)

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: STM32CubeIDE programování

Příspěvek od ondraN » 21 pro 2022, 15:17

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.

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)
{
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.

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: STM32CubeIDE programování

Příspěvek od visk52 » 21 pro 2022, 16:08

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

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: STM32CubeIDE programování

Příspěvek od ondraN » 21 pro 2022, 21:01

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

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
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

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: STM32CubeIDE programování

Příspěvek od visk52 » 21 pro 2022, 21:27

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)
:o :o :o

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: STM32CubeIDE programování

Příspěvek od ondraN » 22 pro 2022, 06:28

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.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů