internetul Windows. Android

Braţ. STM32 Start rapid

Publisko 08/09/2016.

Microcontrolere STM32. Acesta devine din ce în ce mai popular datorită capacității sale, periferice suficient de diferite și flexibilității acesteia. Vom începe să învățăm folosind o taxă de testare bugetară, costul căruia nu depășește 2 dolari (în limba chineză). Vom avea nevoie de noi ST-LINK. Programatorul a cărui cost este de aproximativ 2,5 dolari (în chineză). Aceste cantități de cheltuieli sunt, de asemenea, disponibile pentru studenți și elevi, deci este de la o astfel de versiune bugetară pe care o propun pentru a începe.


Acest microcontroler nu este cel mai puternic dintre ele STM32., dar nu cel mai slab. Există diferite panouri STM32., în observație Descoperire. care costă aproximativ 20 de dolari la un preț. Cu privire la astfel de taxe aproape la fel ca în consiliul nostru, plus programatorul. În cazul nostru, vom folosi separat programatorul.

Microcontroler STI STM32F103C8. Caracteristici

  • Core braț de 32 de biți Cortex-m3
  • Frecvența maximă 72Mhz.
  • 64kb memorie flash pentru programe
  • 20KB memorie SRAM.
  • Alimente 2.0 ... 3.3b
  • 2 x 12-Bіt ADC (0 ... 3.6V)
  • DMA Controller.
  • 37 intrări / ieșiri tolerante la 5V
  • 4 temporizator de 16 riscuri
  • 2 ceasul de supraveghere
  • I2C - 2 anvelope
  • USART - 3 anvelope
  • SPI - 2 anvelope
  • Interfață USB 2.0 Full-Speed
  • RTC - ceasuri încorporate

Pe placa STM32F103C8 disponibilă

  • Porturi de ieșire A0-A12., B0-B1., B3-B15., C13-C15.
  • Micro USB. Prin care puteți alimenta taxa. Pe tablă există un stabilizator de tensiune cu 3.3b. POWER 3.3B sau 5B poate fi furnizată la concluziile corespunzătoare ale consiliului.
  • Buton Resetare.
  • Două jumperi Boot0. și Boot1.. Vom folosi în timpul firmware-ului UART..
  • Două cuarț 8 MHz și 32768 Hz. Microcontrolerul are un multiplicator de frecvență, prin urmare, pe cuarț, 8 MHz vom putea obține frecvența maximă a controlerului de 72 MHz.
  • Două LED-uri. PWR. - Semnale despre sursa de alimentare. PC13. - conectat la ieșire C13..
  • Conector pentru programator ST-LINK..

Deci, să începem cu faptul că vom încerca să clipească microcontrolerul. Acest lucru se poate face folosind USART sau folosind programatorul ST-LINK..

Descărcați un fișier de testare pentru firmware. Programul clipește LED-ul de pe tablă.

Firmware STM32 utilizând adaptorul USB-UART sub Windows

În memoria sistemului STM32. există Bootloader.. Bootloader este înregistrată la etapa de producție și orice microcontroler STM32. pot fi programate prin interfață USART. Folosind un adaptor USAT USB. Astfel de adaptoare sunt cel mai adesea fabricate pe baza unui microcircuit popular. FT232RL.. În primul rând, conectați adaptorul la computer și instalați driverele (dacă este necesar). Descărcați drivere de pe site-ul producătorului FT232RL. - ftdichip.com. Trebuie să descărcați driverele VCP. (Port virtual com). După instalarea driverelor, în computer trebuie să apară un port serial virtual.


Conectați Rx. și Tx. Rezultatele la concluziile corespunzătoare USART1. microcontroler. Rx. Adaptor Connect K. Tx. Microcontroler (A9). Tx. Adaptor Connect K. Rx. Microcontroler (A10). Pe măsură ce USART-USB are ieșiri de putere de 3.3V pentru a furniza puterea de la acesta.

Pentru a traduce un microcontroler în modul de programare, trebuie să setați concluziile Boot0. și Boot1. în starea potrivită și reporniți-l cu butonul Resetare. Sau opriți și porniți puterea microcontrolerului. Pentru asta avem jumperi. Diferite combinații lirează un microcontroler în diferite moduri. Suntem interesați doar de un singur mod. Pentru a face acest lucru, microcontrolerul la ieșire Boot0. Trebuie să existe o unitate logică și pe ieșire Boot1. - zero logic. La bord, aceasta este următoarea poziție a jumperiilor:

După apăsarea butonului Resetare. Sau dezactivarea și conexiunile de alimentare, microcontrolerul trebuie să meargă la modul de programare.

Software pentru firmware

Dacă folosim un adaptor USB-UART, numele portului este despre acest lucru / dev / ttyusb0

Obțineți informații despre cip

Rezultat:

Citiți de la cip la dosarul Dump.bin

Sudo stm32flash -r gump.bin / dev / ttyusb0

Noi scriem în cip

sudo stm32flash -w gump.bin -v -g 0x0 / dev / ttyusb0

Rezultat:

STM32FLASH 0.4 http://stm32flash.googleCode.com/ Folosind Parseix: Interfața binară brută Serial_posix: 57600 8E1 Versix: 0x22 Opțiunea 1: 0x00 Opțiunea 2: 0x00 Dispozitiv ID: 0x0410 (Densitate medie) - RAM: 20kib (512b rezervat de Bootloader) - Flash: 128kib (dimensiune: 4x1024) - Opțiune RAM: 16B - Sistem RAM: 2KIb Scrieți memoria de ștergere a memoriei scrisă și verificată Adresa 0x08012900 (100.00%). Pornirea executării la adresa 0x08000000 ... făcută.

STM32 Firmware utilizând programul ST-Link sub Windows

Când utilizați programatorul ST-LINK. Concluzii Boot0. și Boot1. Nu este utilizat și trebuie să stați într-o poziție standard pentru funcționarea normală a controlerului.

(Carte în limba rusă)

Marcarea STM32.

Familia dispozitivului.TIP PRODUSDispozitivul subfamilia.Numărătoarea PIN.Dimensiunea memoriei flashPachet.Interval de temperatură.
STM32. =
Microcontroler pe bază de 32 de biți pe bază de braț
F \u003d scop general
L \u003d ultra-scăzut-putere
Ts \u003d ecran touchscreen.
W \u003d sistem wireless-on-chip
60 \u003d Multitouch rezistiv
103 \u003d Linia de performanță
F \u003d 20 de pini
G \u003d 28 de pini
K \u003d 32 de pini
T \u003d 36 de pini
H \u003d 40 de pini
C \u003d 48/49 pini
R \u003d 64 de pini
O \u003d 90 de pini
V \u003d 100 de pini
Z \u003d 144 pini
I \u003d 176 pini
B \u003d 208 de pini
N \u003d 216 pini
4 \u003d 16 kbytes de memorie flash
6 \u003d 32 kbytes de memorie flash
8 \u003d 64 kbytes de memorie flash
B \u003d 128 kbytes de memorie flash
Z \u003d 192 kbytes de memorie flash
C \u003d 256 kbytes de memorie flash
D \u003d 384 kbytes de memorie flash
E \u003d 512 kbytes de memorie flash
F \u003d 768 kbytes de memorie flash
G \u003d 1024 kbytes de memorie flash
I \u003d 2048 kbytes de memorie flash
H \u003d ufbga.
N \u003d tfbga.
P \u003d tssop.
T \u003d lqfp.
U \u003d v / ufqfpn
Y \u003d wlcsp.
6 \u003d intervalul de temperatură industrială, -40 ... + 85 ° C.
7 \u003d Intervalul de temperatură industrială, -40 ... + 105 ° C.
STM32.F.103 C.8 T.6

Cum de a elimina protecția la scriere / citire?

Dacă ați primit o taxă cu STM32F103, iar programatorul nu îl vede, înseamnă că limba chineză protejează memoria flash microcontroler. Întrebare "De ce?" Să plecăm fără atenție. Pentru a scoate blocarea, conectați adaptorul UART, va fi programată prin aceasta. Am manifestat jumpers pentru programare si condus:

O voi face de la Ubuntu folosind utilitarul STM32Flash.

1. Verificați dacă microcontrolerul poate fi văzut:

Sudo stm32flash / dev / ttyusb0

Trebuie să obțineți așa ceva:

STM32Flash 0.4 http://stm32flash.googleCode.com/ Interfață Serial_posix: 57600 8E1 Versiune: 0x22 Opțiunea 1: 0x00 Opțiunea 2: 0x00 Dispozitiv ID: 0x0410 (Densitate medie) - RAM: 20KIB (512B Rezervat după bootloader) - Flash: 128KIB (Secem: 4x1024) - Opțiune RAM: 16B - Sistem RAM: 2KIB

2. Îndepărtați protecția de la citire și apoi de la înregistrare:

Sudo stm32flash -k / dev / ttyUsb0 stm32flash 0.4 http://stm32flash.googlecode.com/ Interfață Serial_posix: 57600 8E1 Versiune: 0x22 Opțiunea 1: 0x00 Opțiunea 2: 0x00 Dispozitiv ID: 0x0410 (Densitate medie) - RAM: 20kib ( 512B Rezervat prin bootloader) - Flash: 128KIB (dimensiune: 4x1024) - Opțiune RAM: 16B - Sistem RAM: 2KIB Citire-neprotejare Flash Făcut. sudo stm32flash -u / dev / ttyUsb0 stm32flash 0.4 http://stm32flash.googlecode.com/ Interfață Serial_posix: 57600 8E1 Versiune: 0x22 Opțiunea 1: 0x00 Opțiunea 2: 0x00 Dispozitiv ID: 0x0410 (Densitate medie) - RAM: 20kib ( 512B Rezervat prin bootloader) - Flash: 128KIb (dimensiune: 4x1024) - Opțiune RAM: 16B - Sistem RAM: 2KIb With-Unprotecting Flash Făcut.

Acum puteți lucra în mod normal cu un microcontroler.

Cursul va ajuta la stăpânirea abilităților microcontrolerelor de programare de la zero. De exemplu, este luată o consiliu de depanare Stm32f3discovery. cu un microcontroler instalat STM32F303VCT6..

Vom instala instrumente software pentru a lucra cu această consiliu de depanare, cunoașteți cu I / O Porte, contoare și alte module periferice și învățați cum să le utilizați.

Lecția 1: Introducere

Introducere în microcontrolerele de programare. Selectarea hardware-ului. Prima cunoștință cu consiliul de depanare.

Lecția 2: Instalarea IAR

Cunoașterea producătorului Sf. Microelectronică. Instalarea software-ului de dezvoltare IAR.

Lecția 3: Instrumente suplimentare

Instalarea programului de configurator STM32Cube. Instalarea programului de memorie programator ST vizual.

Lecția 4: Crearea proiectului

Crearea unei configurații de proiect în STM32Cube și generarea de proiecte pentru bancul de lucru încorporat IAR.

Lecția 5. Memorie flash

Lecția 6. Porturi I / O

Conceptul de porturi și linii I / O. Încărcarea programului în consiliul de depanare al mediului de dezvoltare IAR. Pornirea LED-urilor pe tablă.

Lecția 7. LED-uri și butoane

Implementarea "focului de alergare", precum și a LED-urilor de comutare de către buton.

Lecția 8. Salvarea datelor

Salvarea datelor non-volatile în memoria flash microcontroler pe exemplul de memorare a LED-ului pe care comutarea luminii de funcționare înainte de a opri alimentarea

Lecția 9. Contoare de cronometre

Utilizați modulul periferic al contorului temporizator pentru a forma o întârziere.

Lecția 10. Întrerupeți

Utilizarea întreruperii pentru a depăși cronometrul Tim6 pentru a implementa întârzierea.

Lecția 11. Întreruperi externe

Utilizarea diferitelor întreruperi și prioritățile acestora.

Lecția 12. Tactarea

Setați frecvența ceasului modulelor de bază și periferice.

Lecția 13. Modularea pulsului pulsatei

Configurarea și utilizarea modulației pulsului pe canalele Timer Tim1 cu frecvențe diferite.

Lecția 14. Watchtow.

Folosind un cronometru independent și de sistem. Utilizarea înregistrării ferestrelor.

Lecția 15. Convertor analog-digital

Utilizând un convertor analog-digital și un senzor de temperatură internă.

Lecția 16. Canale de bază și suplimentare ADC

Utilizați mai multe canale ale unui singur modul ADC.

Lecția 17. Accesul la memorie directă

Utilizați accesul la memorie directă pentru a obține rezultate analogice-digitale de conversie.

Lecția 18. Discretizarea

Utilizarea unui cronometru Pentru a sincroniza ADC începe în timp ce economisiți rezultatele prin accesul direct la memorie.

Lecția 19. Convertor analogic digital

Utilizarea unui convertor analogic digital pentru a genera un semnal triunghiular, semnal de zgomot sau o valoare analogică constantă.

Lecția 20. Semnal personalizat

Utilizarea unui convertor analogic digital pentru a genera un semnal de formă arbitrară.

Salutări Toți iubitorii de programare, microcontrolere și electronice în general pe site-ul nostru! În acest articol, vă voi spune puțin despre ceea ce vom face aici, și anume despre cursul de formare pe microcontrolerele ARM.

Deci, mai întâi va înțelege ce trebuie să știți și să puteți începe să învățați brațul. Și, în principiu, nimic super complex și încântător 😉, desigur, oamenii merg de obicei la controlerele ARM, care se joacă deja cu poze și AVRS, adică majoritatea dezvoltatorilor lor cu experiență. Dar voi încerca cât mai mult posibil și pot descrie tot ceea ce vom dezasambla că cei care au decis mai întâi să se înceapă în microcontrolerele de programare ar putea înțelege cu ușurință materialul. Apropo, dacă vor apărea întrebări, sau doar ceva va funcționa nu la fel de gând, scrieți în comentariu, voi încerca să-mi dau seama și să vă ajut.

Acum ne întoarcem la probleme tehnice) de mai multe ori am menționat deja numele "Cursul de antrenament ARM", dar, lângă și mare, nu este în întregime adevărat. Microcontrolerul ARM ca atare nu există. Există un controler cu brațul kernel (!), Și asta sunteți de acord, încă nu același lucru. Astfel, astfel de dispozitive produc o serie de firme, printre care sunt în special alocate, stmicroelectronice și semiconductori NXP. În consecință, acestea sunt emise de controlorii STM și LPC. Am ales STM32, mi-a plăcut mai mult \u003d) STM foarte mită care au înțeles cu orice MC de la linia STM32F10x, nu ar exista probleme cu oricare altul. O linie este o foaie de date. Apropo, există o cantitate mare de cărți scumpe și nu foarte de depanare cu controlere STM32, care este foarte mulțumit, deși prima dată va depana programele noastre în simulator pentru a evalua capacitățile controlerului înainte de a cumpăra fierul. Asta e doar în caz, site-ul oficial al STMICROELECTRONICS este.

Așa cum a fost lăsat fără probleme pe subiectul compilatorului, așa că voi spune câteva cuvinte despre asta. Eu, fără să mă gândesc, a ales Keil, nu în ultimul rând datorită unui simulator puternic încorporat. Puteți să vă uitați la UART acolo și pe orice registru, iar chiar și analizorul logic este disponibil. Într-un cuvânt, I Keil a lăsat impresiile mai plăcute, deși există, desigur, de asemenea, dar nu catastrofale. Deci, puteți să le puteți învârti cu îndrăzneală Keil Uvision4 cu oprit. Site (). Adevărat, există unul, dar - IDE este plătit, dar modul demo este disponibil cu limita codului în 32kb, pe care încă mai avem suficient. Cui nu este suficient de acest lucru, există un număr mare de crăpături pentru Keil'a 😉 instalat totul fără probleme - de câteva ori, ei vor intra mai departe și totul este perfect și funcționează fără dansuri suplimentare cu o tamburină.

De fapt, asta-i tot ce am vrut să spun aici, este timpul să trecem de la cuvinte la afaceri, dar acest lucru este deja în următorul articol. Vom învăța programarea microcontrolerelor STM32 de la zero!

Microcontrolerul STM32 este o platformă populară și foarte populară, care vă permite să creați soluții profesionale pentru automatizare. Spre deosebire de Arduino, STM32 necesită o imersie mai profundă în detalii, este mai dificil pentru începători, pentru că manualele ei mai puține în limba rusă. În acest articol, vom încerca să oferim informații de bază despre platformă, istoria sa, să-mi spuneți unde puteți descărca programe și biblioteci, cum să scrieți prima schiță.

STM32 este o platformă bazată pe microcontrolerele STMICROELECTRONICS bazate pe procesor ARM, diverse module și periferice, precum și soluții software (IDE) pentru a lucra cu fier. Soluțiile bazate pe STM sunt utilizate în mod activ datorită performanței microcontrolerului, arhitecturii sale de succes, consumului de energie mică, un preț mic. În prezent, STM32 este deja alcătuită din mai multe linii pentru o varietate de destinații.

Istoria apariției

Seria STM32 a fost lansată în 2010. Înainte de aceasta, Stmicroelectronics a produs deja 4 familii de microcontrolere bazate pe braț, dar au fost mai rău în caracteristicile lor. Controlerele STM32 s-au dovedit a fi optime prin proprietăți și prețuri. Inițial, au fost produse în 14 versiuni care au fost împărțite în 2 grupe - cu o frecvență de ceas de până la 2 MHz și cu o frecvență de până la 36 MHz. Software-ul în ambele grupuri este același cu locația contactelor. Primele produse au fost produse cu memorie flash încorporată 128 kB și RAM 20 KB. Acum, linia sa extins semnificativ, au apărut noi reprezentanți cu valori RAM și memorie flash.

Avantaje și dezavantaje STM32

Principalele avantaje:

  • Cost scăzut;
  • Ușurință în utilizare;
  • O mare selecție de medii de dezvoltare;
  • Chips-urile sunt interschimbabile - dacă nu există suficiente resurse ale unui microcontroler, acesta poate fi înlocuit cu mai puternic, fără a schimba diagrama în sine și taxa;
  • Performanta ridicata;
  • Depanarea convenabilă a microcontrolerului.

Dezavantaje:

  • Prag înalt de intrare;
  • În prezent, nu există atât de multe literatură pe STM32;
  • Majoritatea bibliotecilor create sunt deja învechite, este mai ușor să se creeze propriile lor.

Minusurile STM32 nu sunt permise în timp ce microcontrolerul devine înlocuind Arduino.

Conform caracteristicilor tehnice, Arduino pierde STM32. Frecvența ceasului microcontrolerelor Arduino de mai jos este de 16 MHz față de 72 MHz STM32. Numărul de concluzii GRIO la STM32 este mai mare. Cantitatea de memorie din STM32 este, de asemenea, mai mare. Este imposibil să nu rețineți compatibilitatea PIN-TO-PING STM32 - pentru a înlocui un produs la altul, nu este necesar să schimbați taxa. Dar înlocuirea completă a concurenților Arduino nu poate. În primul rând, este asociat cu un prag înalt de intrare - pentru a lucra cu STM32 trebuie să aveți o bază. Panourile Arduino sunt mai frecvente, iar dacă utilizatorul are o problemă, puteți găsi o soluție pe forumuri. De asemenea, pentru Arduino a creat diverse scuturi și module care extind funcționalitatea. În ciuda avantajelor, raportul preț / calitate câștigă STM32.

Familia Microcontroler STM32 diferă de concurenții săi cu un comportament excelent la temperaturi de la -40 ° C la + 80 C. Performanța ridicată nu scade, spre deosebire de Arduino. De asemenea, puteți găsi produse care funcționează la temperaturi de până la 105 ° C.

Prezentare generală a liniilor de bacanie


Familia STM32 are o gamă largă de produse care diferă în ceea ce privește memoria, performanța, consumul de energie și alte caracteristici.

Seria STM32F-1, STM32F-2 și STM32L sunt pe deplin compatibile. Fiecare dintre seria are zeci de jetoane, care pot fi ușor schimbate la alte produse. STM32F-1 a fost prima linie, performanța sa a fost limitată. Din acest motiv, în funcție de caracteristici, controlorii au prins rapid produsele familiei Stellaris și LPC17. Mai târziu, STM32F-2 a fost eliberat cu caracteristici îmbunătățite - frecvența ceasului a atins 120 MHz. Diferă în puterea de procesor ridicată, care se realizează datorită noii tehnologii de producție de 90 nm. Linia STM32L este reprezentată de modele care sunt fabricate printr-un proces tehnologic special. Scurgerile tranzistorului sunt minime, astfel încât dispozitivele să prezinte cele mai bune valori.

Este important de observat că controlorii de riglă STM32W nu au compatibilitate pin-la-pin cu STM32F-1, STM32F-2 și STM32L. Motivul este că linia a fost dezvoltată de compania care a furnizat partea de frecvență radio. Acest lucru a impus restricții privind dezvoltarea ST.


Cipul STM32F100R4 are un set de caracteristici minime. Volumul memoriei flash este de 16 KB, RAM - 4 KB, frecvența ceasului este de 12 MHz. Dacă este necesar un dispozitiv mai rapid cu o memorie flash mărită la 128 kB, STM32F101RB se va potrivi. Interfața USB este disponibilă la produsul STM32F103RE. Există un dispozitiv similar, dar cu un consum mai mic este STM32L151RB.

Software pentru lucrul cu controlerul


Pentru arhitectura ARM, au fost dezvoltate multe evoluții. Instrumentele de sistem Keil și IAR includ cele mai faimoase și mai scumpe. Programele acestor companii oferă cele mai avansate instrumente pentru a optimiza codul. Există, de asemenea, sisteme diferite - stive USB, stive TCP / IP și altele. Utilizând sistemele Keil, utilizatorul obține un nivel bun de asistență tehnică.

De asemenea, mediul de dezvoltare Eclipse este de asemenea utilizat pentru STM32, iar sistemele Atollic Truesududio (Coocx și Coocox IDE (Free) (Free) sunt utilizate. Utilizate în mod obișnuit. Avantajele sale față de alte medii de dezvoltare:

  • Software gratuit;
  • Ușurință în utilizare;
  • Există multe exemple care pot fi descărcate.

Singurul dezavantaj al mediului de dezvoltare Coocox IDE este un ansamblu numai sub Windows.


Începeți să studiați microcontrolerul STM32 este mai bun de la bordul de descoperire. Acest lucru se datorează faptului că acest consiliu are un programator încorporat. Acesta poate fi conectat la un computer prin cablu USB și să utilizeze atât un microcontroler programabil, cât și dispozitive externe. Taxa de descoperire are cablarea completă a pinilor de la controlerul de pe pinii de bord. O varietate de senzori, microfoane și alte dispozitive periferice pot fi conectate la taxă.

Ce va fi necesar pentru a conecta STM32 la computer

Pentru a începe, vor fi necesare următoarele componente:

  • STM32 Discovery Board însuși;
  • Datasheet pe modelul selectat;
  • Manual de referință pe un microcontroler;
  • Instalat în mediul de dezvoltare a calculatorului.

De exemplu, primul program va fi revizuit în mediul Coocox IDE.

Primul program.


Coocox coide.

Formarea ar trebui să fie inițiată cu cea mai simplă - cu World Bună ziua. Mai întâi trebuie să instalați un computer COOCOX la un computer. Standard de instalare:

  • Programul de la site-ul oficial este descărcarea;
  • Acolo trebuie să introduceți adresa dvs. de e-mail și să începeți să descărcați un fișier cu extensie.exe;
  • Trebuie să deschideți proiectul COOCOX IDE FIL, selectați Calea de instrumente;
  • Specificați calea către fișier;
  • Deschideți din nou mediul de dezvoltare și faceți clic pe Vizualizare -\u003e Configurare în fila Debugger;
  • Acum puteți înregistra programul.

Când programul este instalat, acesta trebuie deschis. Ar trebui să mergeți la fila de depozitare și să selectați ST - microcontrolerul.

Apoi, pe ecran va apărea o listă de biblioteci care pot fi conectate. Pentru primul program, va fi necesară boot-ul CMSIS și CMSIS, o bibliotecă pentru a lucra cu sistemul de ceasornic RCC, GPIO pentru persoanele cu pini.

Programul în sine este scris ca și pentru Arduino, trebuie să cunoașteți fondarea limbii Si.

În fereastra proiectului, ar trebui să deschideți Main.c.c. În codul de la început, ar trebui să conectați alte biblioteci decât CMSIS (acestea sunt deja conectate automat). Acestea sunt adăugate după cum urmează:

#include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h". // Pentru LED-ul intermitent, trebuie să setați o întârziere: întârziere vid (int i) (pentru (I! \u003d 0, i-);)

Apoi, ceasul de port este adăugat în funcția principală principală. Ce fel de contact pentru care este responsabil, poate fi vizualizat în datashee la microcontroler.

RCC_APB2PERIPHCLOCCMD (RCC_APB2PERIPH_GPIOC, Activare);

Pentru a configura parametrii de ieșire, trebuie să vă înregistrați numele și să puneți punctul. Toate caracteristicile vor fi indicate în meniul pop-up. Ele pot fi corectate.

După aceea, este necesar să se facă o buclă în timp ce LED-ul clipește până când puterea se oprește.

Când programul este scris, acesta poate fi descărcat la controler. Dacă există o bord de depanare, trebuie să o conectați printr-un cablu USB și să faceți clic pe Codul de descărcare pentru a clipi. Dacă placa lipsește, adaptorul va fi obligat să fie conectat la portul de calculator. Contactul Boot 0 se conectează la plus al puterii controlerului, iar apoi puterea MK este pornită. După aceea, firmware-ul va începe.

Pentru a descărca programul în microcontroler, trebuie să urmați instrucțiunile din aplicație. În primul rând, codul portului este prescris la care este conectat microcontrolerul. Indică, de asemenea, viteza. Se recomandă să se ia o valoare ușoară, astfel încât să nu existe niciun eșec. Programul va găsi un microcontroler și va trebui să faceți clic pe butonul "Următorul". În fila Descărcare în dispozitiv, trebuie să selectați programul scris și să faceți clic pe "Next" în Download din câmpul de fișiere.

După aceasta, trebuie să opriți puterea controlerului STM32, închideți demonstratorul încărcătorului bliț, opriți adaptorul. Acum puteți porni din nou microcontrolerul în modul obișnuit. Când programul este încărcat, LED-ul va clipi.

Lucrul în alte programe este în mod similar. De asemenea, selectați bibliotecile dorite și codul este prescris. Cu utilități plătite funcționale mai mult și puteți crea proiecte mai complexe.

Recent, un coleg ma pus pe ideea de a crea o casă inteligentă, chiar am reușit să comand zeci de senzori diferiți. A apărut despre alegerea Microcontroler (denumită în continuare MK) sau taxe. După câteva căutări au găsit mai multe opțiuni. Printre ei erau Arduino. (inclusiv clonele sale, unul dintre aceștia comandați pentru el însuși pentru a vă negocia pur și simplu) și Platforma de lansare., Dar toate acestea sunt excesiv și greoaie (deși în termeni de programare este mult mai ușor, dar nu voi ridica Holivarov, toată lumea are propriile sale gusturi). Ca rezultat, am decis să definesc cu taxa terminată, ci să luăm doar MK și să fac totul de la zero. A ales în cele din urmă între ani Atmel Atticiny. (2313), Atmel Atmega. (Am decis să refuz pentru că nu am găsit bani adecvați), STM32. (Cortexul de bază Braţ). Cu un Tinky, am reușit deja să mănânc, așa că m-am dus STM32VL-descoperire.. Acest lucru poate fi numit intrarea în ciclul articolelor STM32.. Voi face o rezervare imediat, autorul majorității acestor articole nu va fi eu, pentru că El însuși va ști doar, aici le publicăm mai întâi pentru mine, astfel încât este mai convenabil să căutați dacă cineva uită. Și așa a dus!

General

Microcontrolere Familie STM32. Conține în compoziția sa până la șapte porturi I / O pe 16 biți cu nume de la Porta la PORTG. Într-un model specific microcontroler Fără excepții, toate concluziile portuare sunt disponibile, numărul total al cărora depinde de tipul de carcasă și stipulate în foaia de date la subfamilia corespunzătoare.

Pentru a activa portul X, este necesar să-l conectați la magistrala APB2 prin setarea bitului IOPXEN corespunzător în înregistrarea permisiunii ceasului ceasului periferic Rcc_apb2enr.:

RCC-\u003e APB2ENR | \u003d RCC_APB2ENR_IOPXEN; // Permiteți ceasul PORTX.

Gestionarea porturilor STM32. Se efectuează utilizând seturi de șapte registre pe 32 de biți:

  • Gpiox_crl, gpiox_crH. - Specificați modurile de funcționare a fiecăruia dintre porturile portuare ca intrare sau ieșire, determinați configurația cascadelor de intrare și ieșire.
  • Gpiox_idr. - Registrul datelor de intrare pentru citirea stării fizice a ieșirilor de port x.
  • Gpiox_odr.- Registrul de ieșire înregistrează date direct la port.
  • Gpiox_bsrr. - Înregistrarea resetării atomice și instalarea biților de porturi.
  • Gpiox_bsr. - Înregistrarea resetării biților porturilor.
  • Gpiox_lickr. - Registrul de configurare a configurației.

Moduri de ieșire GPIO.

Modurile de funcționare a concluziilor individuale sunt determinate de combinația de biți Modei. și Cnfy. Registre Gpiox_cr. și Gpiox_crh. (În continuare: port X-Nume, numărul portului Y-Port).

Gpiox_cr. - Registrul de configurare 0 ... 7 port x.:

Registrul de registru Gpiox_crh. Similar cu structura. Gpiox_cr. Și concepute pentru a gestiona modurile de lucru ale concluziilor portului senior (biți 8 ... 15).

Biturile modei ale registrelor specificate determină direcția de ieșire și limitează viteza de comutare în modul de ieșire:

  • Modey \u003d 00: Modul de intrare (după starea de resetare);
  • Modey \u003d 01: Modul de ieșire, viteza maximă - 10 MHz;
  • Modey \u003d 10: Modul de ieșire, viteza maximă - 2 MHz;
  • Modey \u003d 11: Modul de ieșire, viteza maximă - 50 MHz.

CNF Bits Setați configurația cascadelor de ieșire ale concluziilor corespunzătoare:

În modul de intrare:

  • CNFY \u003d 00: Intrarea analogică;
  • CNFY \u003d 01: Intrarea în a treia condiție (stare după descărcare);
  • CNFY \u003d 10: Intrarea cu un rezistor atractiv de tragere (dacă PXODR \u003d 1) sau trageți în jos (dacă PXODR \u003d 0);
  • CNFY \u003d 11: Rezervat.

În modul de ieșire:

  • CNFY \u003d 00: Producția în doi timpi de scop general;
  • CNFY \u003d 01: Ieșire exterioară în aer liber;
  • CNFY \u003d 10: Ieșire în doi timpi cu o funcție alternativă;
  • CNFY \u003d 11: Outlet Outdoor cu o funcție alternativă.

Pentru a crește imunitatea zgomotului, toate tampoanele de intrare conțin declanșatoare Schmidt în compoziția lor. Parte a concluziilor STM32.Suportat cu diode de protecție conectate din autobuzul total și magistrala electrică marcată în fișa tehnică ca FT (5V tolerant) - compatibilă cu o tensiune de 5 volți.

Protecția biților de configurare GPIO

Pentru a proteja biții în registrele de configurare de la intrarea neautorizată în STM32. Furnizați registrul de setări Gpiox_lickr.
Gpiox_lickr. - Înregistrarea setărilor de ieșire a portului de blocare:

Pentru a proteja setările unei ieșiri de port separate, trebuie să instalați bitul LCKY corespunzător. După aceea, pentru a face un post consistent în categorie Lkk. Valorile "1" - "0" - "1" și două operațiuni de citire a înregistrării Lkr.care în caz de blocare reușită va fi dată pentru biți Lkk. Valorile "0" și "1". Protecția biților de tuning va salva operația la o altă repornire a microcontrolerului.

Definiții de fișiere pentru periferia microcontrolere STM32. STM32F10X.H definește grupurile de registre individuale combinate de un scop funcțional comun (inclusiv GPIO.), ca structură a limbii Si și registrele în sine ca elemente ale acestei structuri. De exemplu:

GPIOC-\u003e BSRR. - Registrul BSRR al portului / resetării GPIOC.
Folosim definițiile din fișierul STM32F10X.H pentru a ilustra registrele de microcontroler I / O STM32F100RB. instalat în setul de pornire Stm32voldiscovery.:

#Include "STM32F10X.H" U32 TMP; INT Main (RCC-\u003e APB2ENR | \u003d RCC_APB2ENR_IOPCEN; // Permiteți portului de așteptare. GPIOC-\u003e CRH | \u003d GPIO_CRH_MODE8; // LED-ul de ieșire4 PC8 LED la ieșire. GPIOC-\u003e CRH & \u003d ~ GPIO_CRH_CNF8; // Ieșire în două curse pe PC8. GPIOC-\u003e CRH | \u003d GPIO_CRH_MODE9; // Ieșirea ieșirii LED-urilor LED3. GPIOC-\u003e CRH & ~ GPIO_CRH_CNF9; // ieșire în două curse la PC9. GPIOA-\u003e CRL & \u003d . Gpi_lckr_lckk; tmp \u003d gici-\u003e .. lkr; tmp \u003d gici-\u003e lkr;)

Înregistrarea și citirea GPIO

Pentru a scrie și a citi porturile sunt destinate Gpiox_idr. și zi liberă Gpiox_odr. Registrele de date.

Înregistrați în Registrul de ieșire Odr. Portul configurat pentru a afișa face ca nivelele de ieșire ale tuturor descărcărilor porturilor, în conformitate cu valoarea de înregistrare. Dacă ieșirea este configurată ca intrare cu rezistențe de strângere, starea biților corespunzători ai registrului Odr. Activează indicatorul de ieșire la sursa de alimentare (pull-up, ODR \u003d 1) sau anvelopa totală a microcontrolerului (trageți în jos, ODR \u003d 0).

Citirea unui registru Idr. Returnează starea concluziilor microcontrolerului reglat ca inputuri:

// Dacă butonul este apăsat (PA0 \u003d 1), setați porturile portului C, altfel resetați. Dacă (GPIOA-\u003e IDR & GPIO_IDR_IDR0) GPIOC-\u003e ODR \u003d 0xFFFF; Altfel gici-\u003e ODR \u003d 0x0000;

Resetarea și instalarea biților de porturi

Pentru resetarea atomică și instalarea biților GPIO. în microcontrolere STM32. CONECTATUL CONSTRUITLOR Gpiox_bsrr.. Tradițional pentru arhitectură Braţ Metoda de control al parametrilor registrelor nu necesită utilizarea tipului de operare "Record-modificare-înregistrare" Vă permite să instalați și să resetați biții portului cu o intrare simplă a unității în biții de instalare Bs (Bitset) și resetați. Br (Bitrept) Inregistreaza-te BSRR.. În acest caz, înregistrarea din registrul de biți zero nu afectează starea concluziilor corespunzătoare.

Gpiox_bsrr. - Registrul de relief și instalarea biților de port:

Gpioc-\u003e bsrr \u003d gpi_bsrr_bs8 | gpi_bsrr_br9; // Bun venit LED4 (PC8), rambursați LED3. Gpioc-\u003e bsrr \u003d gpio_bsrr_bs9 | gpi_bsrrr_br8; // Bun venit LED3 (PC9), rambursați LED4.

Funcții alternative GPIO. Și realocarea lor (Remapping)
Aproape toate lanțurile externe de scop special STM32. (inclusiv concluzii pentru conectarea resonanților cu cuarț, JTAG / SWD. Și așa mai departe) pot fi rezolvate pe concluziile corespunzătoare ale microcontrolerului sau deconectați de la ele pentru a putea folosi ca concluzii generale. Alegerea funcției alternative de ieșire se efectuează utilizând registrele cu prefixul "Afio.”_.
În plus față de acest registru Afio._ Faceți posibilă alegerea mai multor opțiuni pentru localizarea funcțiilor speciale cu privire la concluziile microcontrolerului. Acest lucru se referă în special la interfețele de concluzie, cronometrele (registrele AFIO_MAPR.), concluziile întreruperilor externe (registre AFIO_EXTICR.) etc.