Stránka 1 z 1

Arduino IDE a STM32F1xx - problém s voláním uživ. funkcí

Napsal: 08 pro 2024, 10:27
od Barbucha54
Zdravím vespolek. Narazil jsem na problém v programování STM32F103 pod Arduino IDE. Nadefinovaná funkce není kompilátorm akceptovaná a není zařazena do programu. Tj. pokud nadefinuji funkci, tak jak je to obv v Arduino IDE, kterou pak následně volám z těla programu, vůbec se neprovede. Sice jsme nezkoumal výsledný zdrojový kód, ale soudě podle velikosti vygenerovaného kódu se funkce vůbec nepřeloží. Když pak obsah té samé funkce vložím přímo do těla prograni, instrukce se provedou. Netušíte někdo čím to může být? děkuji za názor.

Napsal: 08 pro 2024, 10:46
od asdf
Asi bude nejlepší, když sem dáš ten program.

Napsal: 08 pro 2024, 19:11
od bdn
Tak dej do funkce print("moje funkce"); a hned uvidíš na terminálu, zda se volá nebo né.
Zkoumat podle velikosti kódu, zda se funkce volá nebo nevolá, to já nechápu jak to děláš?

Napsal: 08 pro 2024, 19:23
od Barbucha54
bdn píše:Tak dej do funkce print("moje funkce");
No právě, i když se tam dá výpis prostřednictřvím Serial.print, tak nic nevypíš. Tudíž evidentně se funkce neprovádí a tudíž se asi ani nepřeložila. Posouzení velikosti kódu mám na mysli tak, že nechám zkomlilovat program s fukcí a bez funkce a velikosti jsou cca stejné.

Napsal: 08 pro 2024, 20:41
od asdf
Tak typicky se tohle stává, když tu funkci zapomeneš zavolat. Nebo když to zapomeneš znova přeložit. Ale co víc asi tak poradit, když se nemůžeme na ten kód podívat? Nechceš ho sem dát?

Napsal: 09 pro 2024, 07:39
od Zaky
To v dnešní době opravdu někdo dobrovolně pracuje v prostředí, v němž nelze provádět debug? Tedy krokovat program, zastavovat na breakpointech a tak? Proč???

Napsal: 09 pro 2024, 10:49
od Mahoney
Zaky, co to je za povzdechy? Každej ať si pracuje v čem chce a jak potřebuje... Já třeba používám debug LED a textový editor, nehledě na to že ne každý čip vždy podporuje HW debug - ale hlavně jde o to, že nemůžeš druhým brát svobodu, co je dobré pro tebe, nemusí vždy být dobré pro druhého...

Napsal: 09 pro 2024, 11:24
od ondraN
Taky je možné, že se ta funkce volá ve větvi, která se nikdy nemůže provést z logických důvodů a překladač to v rámci optimalizace vyhodí. Jak už ale napsali předchůdci, bez toho kódu ti nikdo moc víc než obecné rady nedá.

P.S. Typicky vznikají chyby v tom, že třeba v podmínce if se zapomene při porovnání druhé =
např. if(x=0) namísto if(x==0)
Oba příkazy jsou přitom syntakticky správné ale logicky úplně jiné. A ten první se nikdy nevykoná, tak překladač odstraní kód pro splnění podmínky(dosadí se do x nula a výsledek je vždy false). Druhý se vykoná když je x nulové.

Napsal: 16 pro 2024, 18:10
od mtajovsky
Tak ať si každý zvolí prostředí jaké mu vyhovuje, ale zrovna STčka HW debug podporují a debugger ST Link stojí pár šupů. A pokud se k tomu přidá dnes již vyspělé CUBE a TrueStudio nebo rovnou CUBE IDE nemá to chybu. A pak se jeden nemusí peklovat s prostředím, které mu nedá odpověď, proč to nefunguje.

Napsal: 29 lis 2025, 08:13
od Mahoney
Barbucha54 píše:Nadefinovaná funkce není kompilátorm akceptovaná a není zařazena do programu.
Snížit/vypnout úroveň optimalizace kompilátoru.

Arduino IDE 1.6.x:
https://forum.arduino.cc/t/optimization ... 6-5/331335

Arduino IDE 2.0
https://forum.arduino.cc/t/arduino-ide- ... ion/920747