FreeRTOS start rapid pe stm32 descoperirea f4, blablacode
FreeRTOS - sistem de operare în timp real. Sanse sunt, dacă aveți nevoie de sistemul de operare de pe microcontroler, atunci când îl utilizați;) IMHO
Dotstoinstva: gratuit, rapid, o mulțime de porturi de arhitectură (nu trebuie să învețe ceva nou)
Dezavantaje (c) documentația este distribuită gratuit. Dar nu vă faceți griji! Există tone de site-uri pe acest subiect, inclusiv în limba rusă.
Faptul că va exista în acest articol: o poveste despre modul de a compila și rula pe piatră STM32 FreeRTOS. 2 Rulați sarcina, LED-urile clipesc.
În primul rând, desigur, leagăn FreeRTOS. Acest lucru se poate face de pe site-ul oficial sistemul de operare freertos.org
În arhiva rezultată veți găsi codul sursă în dosarul sursă și exemple în dosarul Demo
Du-te la dosarul sursă.
Imediat spun, că am de lucru în Eclipse pe Ubuntu Linux, se spune că am compilator gcc;)
În dosarul dosarul sursă, consultați Include un sistem de fișiere antet și dosarul portabil, în care ați stocat porturile pentru arhitecturi diferite. Din acest dosar, copiați fișierele pe care doriți, ștergeți restul.
Du-te la FreeRTOSV7.1.1 / Sursa / portabile / CGC / ARM_CM4F
și copiați cele două fișiere acolo port.c și portmacro.h. În consecință, sursa muta în dosarul sursă. și fișierul antet în Source / Include dosar
Acum, copiați folderul MemMang fișierul heap_2.c în directorul sursă.
După terminat, puteți șterge portabil dosar.
Efectuat. Distribuția a fost preparată. Acum FreeRTOSConfig.h fișierul de configurare. Nu sunt într-adevăr locuiesc pe ea, de fapt acolo și este reglat. Dar aceasta este un articol separat. Rezervare numai pe parametrul:
De asemenea, trebuie să redenumiți sau remaparea întrerupere a sistemului de operare le înțelege:
Fișierul main.c sistemele noastre de operare program de funcționare și de a defini două sarcini egale - diode intermitent.
Acum două probleme:
În ea a decis să FreeRTOS folosească notația maghiară, astfel încât să nu poate fi surprins și sufix prefix de funcția. Deși cred că e un ideotizmom complet.
Vă rugăm să rețineți că fiecare sarcină ar trebui să ia un FreeRTOS pointer la o structură de vid, în pot fi transmise astfel o serie de opțiuni modul.
În principalele periferice Inițializare:
Creați două sarcini:
Acest lucru se face după cum puteți vedea cu ajutorul funcției xTaskCreate. Primul parametru - un pointer la o funcție (numele), al doilea - numele de proces (putem spune că este folosit pentru frumusete), apoi - dimensiunea minimă a stivei pentru funcția. apoi - opțiuni (noi nu le împărtășim - NULL), penultima au prioritate (2) și ultimul indicatorul la xTaskHandl cu care puteți administra în continuare procesele.
sarcini planirovshik Run:
De fapt, toate. Întrerupe nu avem, așa că am șters fișierele cu întreruperi ..
Am primit acest lucru:
ps nu uita să-i spuneți linkerul dosarul în care pentru a căuta antetele.
Dacă cineva are o problemă cu compilarea și ieși de aici aceste erori:
Eroare: procesor selectat nu acceptă modul Thumb `vstmdbeq R0, #„!
Eroare: instrucțiune nu este permisă în IT bloc - `R0 stmdb, #„!
Eroare: selectat procesorul nu acceptă modul degetul mare `vldmiaeq R0, #„!
Eroare: instrucțiune nu este permis în blocul IT - `R0 ldmia, #„!
Cel mai probabil, mis-flag 1 -mfloat-abi = moale în loc -mfloat-abi = softfp
Dar cu astfel de steaguri el va ridica moralul:
-MCPU = cortex-m4 -mthumb -mfloat-= softfp -mfpu ABI = fpv4-sp-D16 -O0 -fmessage lungime = 0 -fsigned-char -ffunction-sectiuni -fdata-sectiuni
Dacă aș fi avut descoperirea stm32f401