In acest articol vom incerca folosirea placii de dezvoltare STM32. Procesoarele folosite in aceste placi sunt ARM Cortex M3. Placa folosita este STM32F103C8.
Placa pereaza la o frecventa de 72MHz, se alimenteaza cu o tensiune intre +2V si +3,6V. Mai multi parametri ai acestei placi se pot citi aici.
Aceasta placa de dezvoltare are un pret de 48 lei si se poate achizitiona de aici.
Placa de dezvoltare este cea din poza de mai jos:

Pentru a putea foloi aceasta placa de dezvoltare impreuna cu Arduino IDE va trebui mai intai sa scriem un bootloader. Pentru a face acest lucru va trebui sa folosim un adaptor USB la TTL. Eu am folosit programatorul de mai jos:

Conexiunile intre programator si placa de dezvoltare se fac in felul urmator;
Programator --- STM32
VCC - 3V3
GND - GND
RXD - A9
TXD - A10


Urmatorul pas este sa descarcam software-ul folosit pentru a scrie bootloaderul. Acest software se poate descarca de aici.
Apoi va trebui sa descarcam si fisierul bin care contine noul bootloader. Acesta se poate descarca de aici.
Pentru a putea scrie acest fisier va trebui sa setam placa de dezvoltare in mod programare. Pentru a putea face acest lucru va trebui sa mutam jumperul Boot0 din pozitia 0 in pozitia 1.
Pornim software-ul pentru a scrie fisierul bin.



Alegem fisierul bin necesar:




Dupa acest pas vom pune jumperul Boot0 inapoi in pozitia 0. In acest moment placa de devoltare poate fi folosita impreuna cu Arduino IDE si sketchurile pot fi incarcate prin portul USB ca orice alta placa Arduino. Dar inainte de a incarca primul sketch va trebui sa instalam si driverele necesare. Acestea se pot descarca de aici.
Apoi deschidem Arduino IDE si vom face urmatoarele modificari:
Selectam meniul Fisier > Preferinte si la Board Manager adaugam acest link: http://dan.drown.org/stm32duino/package_STM32duino_index.json
Salvam apoi accesam meniul Instrmente > Placa *** > Manager Placi si de acolo alegem STM32F1xx boards.
Dupa se va selecta placa dorita si putem incarca primul sketch. Acesta este clasicul blink care va aprinde si stinge ledul aflat pe placa.
void setup() {
pinMode(PC13, OUTPUT);
}
void loop() {
digitalWrite(PC13, HIGH);
delay(300);
digitalWrite(PC13, LOW);
delay(300);
digitalWrite(PC13, HIGH);
delay(300);
digitalWrite(PC13, LOW);
delay(300);
digitalWrite(PC13, HIGH);
delay(1500);
digitalWrite(PC13, LOW);
delay(1500);
}