Zkouším proniknout do trochu výkonějších procesorů a při pokusech s STM32F103 jsem narazil na problém, kterému nerozumím.
Jde o jednoduché odesílání zpráv do tří nezávislých sériových portů.
Testovací program vypadá takto:
Kód: Vybrat vše
byte i = 0;
void setup()
{
Serial.begin(9600); // TX pin .... PA9
Serial1.begin(9600); // TX pin .... PA2
Serial2.begin(9600); // TX pin .... PB10
}
void loop()
{
i++;
Serial.print("SERIAL PA9 ... ");
Serial.println(i);
Serial1.print("SERIAL PA2 ... ");
Serial1.println(i);
Serial2.print("SERIAL PB10 ... ");
Serial2.println(i);
delay(1000);
}
Když ten program do desky nahraju v prostředí Arduino přes obyčejný USB/TTL převodník (převodník s čipem CH340 je při nahrávání připojený na piny PA9 a PA10), tak po spuštění program pracuje podle očekávání. Na výstupech PA9, PA2 a PB10 se objevují zprávy, které odpovídají pinům (viz obrázky níže).
Když ale stejný program nahraju přes programátor ST-LINK V2 (připojený přes piny SWCLK a SWDIO), tak po jeho spuštění jsou na pinu PA9, zprávy, které měly být na pinu PB10.
Pin PA2 odesílá správné zprávy.
A na pinu PB10 není žádná komunikace patrná.
Jak je možné, že se stejný program chová úplně jinak jen tím, že ho do procesoru nahraju různými cestami?
Nebo dělám něco špatně?
Přikládám i obrázky nastavení pro nahrávání přes ST-LINK a pře USB/TTL převodník.
Nastavení pro nahrání programu přes USB/TTL převodník:
Výstupy na pinech PA9, PA2 a PB10 po nahrání programu přes USB/TTL převodník - V POŘÁDKU:
Nastavení pro nahrání programu přes ST-LINK V2:
Výstupy na pinech PA9, PA2 a PB10 po nahrání programu přes ST-LINK: