EB906585

Page 1


Používáme FreeRTOS

na mikrokontroleru STM32

Ing. Vojtěch Skřivánek

*Create the thread(s) */ /* definition and creation of defaultTask */

osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);

defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); /* USER CODE BEGIN RTOS_THREADS */

xEventGroupCreate();

xTaskCreate(TaskNizkaPriorita1, "Task Nizka 1", 64, NULL, 1, NULL);

xTaskCreate(TaskNizkaPriorita2, "Task Nizka 2", 64, NULL, 1, NULL);

xTaskCreate(TaskVysokaPriorita1, "Task Vysoka 1", 64, NULL, 2, NULL);

BaseType_t status = if(status != pdPASS) { HAL_UART_Transmit(&huart2, "Plna pamet", 10, 100); while(1);

za podpory firmy SIE

Používáme FreeRTOS

na mikrokontroleru STM32

Ing. Vojtěch Skřivánek

Vydání první 2023

© Ing. Vojtěch Skřivánek

© Mgr. Tomáš Zahradníček - TZ-one

ISBN: 978-80-7539-153-7 (PDF verze)

Poděkování

Děkujifirmě

SIEMENS

zapodporupřipsanítétoknihy.

4.2.1Příklad1–tvorbavláknaasdíleníčasu

4.3.2Příklad4–periodicitaběhu

4.4.1Příklad6–plánovacíalgoritmus

4.5.1Příklad7–odstavenívlákna

4.6.1Příklad8–mazánívlákna

5.1.1Příklad9–periodickýajednorázovýčasovač

6.2.1Příklad11–odstaveníplánovacíhoalgoritmu

7.2.1Příklad14–dvapříjemcisvyššíprioritou

7.2.2Příklad15–dvavysílačesvyššíprioritou

12.0.1Příklad23–FreeRTOSvúspornémrežimu

Kapitola1

Úvod

Tatoknihapojednáváooperačnímsystému FreeRTOS,kterýjevsoučasnédoběvelmirozšířený.Jeto předevšímdíkyjehovolnélicenciadostupnostiprovelkémnožstvímikrokontrolerů.Vknizejepopsáno,jak tentooperačnísystémfunguje,ajakémožnostiafunkcenabízívývojářikpoužití.

Knihasenesnažípokrýtvšechnyteoretickéaspektyoperačníhosystému.Soustředísepředevšímnapraktickévyužitínejčastějipoužívanýchnástrojů.Protosevknizenepopisujíanirozšířené,nepříliščastovyužívané funkcesystému.Prostorjeradějipřenechánpraktickýmpříkladům,vnichžjsoučastoukázánaskrytánebezpečí.Tamohoupřišpatnémpoužitínástrojůoperačníhosystémuneblazeovlivnitběhprogramu.

Příkladyvtétoknizevyužívajíjakoplatformuvývojovoudesku NUCLEO-L073RZ.(Použitavknižnísérii "ProgramujemeSTM32".)Nicméněpříkladyjsounahardwaruzávislépouzeminimálně–problikáníLED, použitísériovélinkynakomunikacisPC.Protojelzesnadnopřevéstinajinékontroleryčisystémy,proněžje FreeRTOS uzpůsobeno.Proseznámenísoperačnímsystémemajehonástrojinavícčastostačípříkladpouze pročíst.

Knihavycházípředevšímzedvoudokumentůuvedenýchvzávěruknihy.Teoretickáčástjevtétoknize značnězkrácena,aleneníopomenutonicdůležitého.Naopakdíkyvětšímudůrazunaprakticképříkladyjeobčas názorněvidětproblém,kterýpřipouhémteoretickémpopisufunkcenástrojůnenízřejmý.Aprávěpomocí vysvětleníneočekávanéhochováníukázkovéhoprogramusičtenářuvědomí,jakoperačnísystémfungujeanač sipřijehopoužívánídátpozor.

Předpokládáse,žečtenářjižmázkušenostisprogramovánímmikrokontrolerů STM32 ,ví,jaksepracuje sknihovnímifunkcemi HAL aumípoužívat STM32CubeIDE

1.1Strukturaknihy

Knihasevesvýchjedenáctikapitoláchzabývárůznýmitématyoperačníhosystému FreeRTOS.Vprvní, obecnékapitolejeteoretickýúvodooperačnímsystémuajehostruktuře.

Každáznásledujícíchosmikapitolsezabývájednímznástrojů(čiskupinoupodobnýchnástrojů),které můžeprogramátorvyužít.Každátatokapitolamákrátkýteoretickýúvodkdanémunástroji.

Cojevšakdůležitější,každákapitolačipodkapitolaobsahujepříklady.Příkladysevesvékomplexnosti lišívzávislostinanáročnostičidůležitostitématu.Častosevpříkladechexperimentuje,čisejejichprogram mění,abybylvidětrozdílvjehochování.Důvodemzměnječastointuitivnípoužitífunkcíoperačníhosystému, kterévšakvedekneočekávanémuběhuprogramu.

Téměřvkaždémpříkladusenacházíjedenčivícegrafůnázornězobrazujícíchběhprogramu,kteréjsou velmidůležitékpochopenízpůsobufunkceoperačníhosystému.Všechnyknihovnífunkceoperačníhosystému použitévpříkladechjsouvtextudetailněpopsány.

Každákapitolapředpokládáznalostizkapitolpředchozích,atopředevšímupříkladů.Nenítedydoporučenokapitolypřeskakovat,zvláštěpakvpřípadě,kdyčtenářnemápředchozízkušenostisžádnýmikontrolery aoperačnímisystémy.

1.2Fontytextu

Anglickézkratky,názvyfunkcíaparametrůjsouvtextupsánytučnoukurzívou-např. xTaskCreate.Ač bybylokonzistentnějšípoužívatvknizebuďpouzečeské,neboanglickénázvosloví,existuje-ličeskýekvivalent (např. queue =fronta),jepoužit,jelikožlépezapadnedověty,kterájepaksrozumitelnější.

Vobrázcíchčigrafechjsouněkteréčástičíselněoznačeny.Natatooznačeníjevtextuodkazovánotučně psanýmčíslemvzávorce–např. (1)

Názvyvlákenafunkcíjsoupsánykurzívouanázvyvláken(Task =vlákno)začínajívelkýmpísmenem–např. Vlakno1, uartOdesli.

Kapitola2

Vývojovénástroje

Kprogramovánímikrokontrolerůjsouzapotřebítřizákladnínástroje.

Prvnímznichjesamozřejměsamotnýmikrokontroler.Nejsnazšímzpůsobem,jakmítkdispozicifunkční mikrokontrolerpřipravenýkprogramováníapoužíváníjehoperiferií,jeopatřitsivývojovoudesku.Firma STMicroelectronicsnabízíširokouškálucenověpříznivýchvývojovýchdesek.Mezinejznámějšípatřířadydesek Nucleo a Discovery.Tyseodsebelišítím,žezatímco Nucleo obsahujepřevážněpouzemikrokontrolera konektory, Discovery dostčastoskýtátakérozličnésenzory,tlačítka,LED,displejeajinéprvky,připojené přímokekontroleruapřipravenékokamžitémupoužití.

Druhýmpotřebnýmnástrojemjeprogramátormikrokontroleru,kterýdokáženahrátbinárníkódzPC dopamětiprogramučipu.Tentoprogramátorjemožnékoupitsamostatně,alevýhodouvšechvývojových desekfirmySTMicroelectronicsje,žekaždáznichmávsoběprogramátora debugger (používanýkladění programu)jižintegrovaný.

Zbýváposlednínástroj,ačkolivjdevlastněodva,kteréjevšakmožnoopětzískatvjednombalíčku.Prvnímjevývojovéprostředí,vekterémjemožnésnadnopsátkódaspravovatprojektprogramu.Druhýmje překladačzdrojovéhokódu,psanéhovjazyceC,dostrojovéhobinárníhokódu,kterémurozumídanýkontroler.FirmaSTMicroelectronicsnabízízdarmasvévývojovéprostředí STM32CubeIDE,vekterémjemožné napsatzdrojovýkód,přeložitjejdostrojovéhoapomocíprogramátorujejnahrátdoprogramovépaměti mikrokontroleru.

2.1Vývojovádeska

Vývojovádeska,kterájepoužitanavšechnypříkladyvtétoknize,jezřadydesek Nucleo snázvem NUCLEO-L073RZ .

VývojovádeskaNUCLEO-L073RZ[1]

Deskaobsahuje,mimomikrokontroleru STM32L073RZ ,takéjižzmíněnýprogramátoradebuggersloužícíkladěníprogramu (1).Programátorsenacházívhorníčástidesky,kteroujemožnéodspodníodlomit.K programováníkontrolerůmimovývojovoudeskusloužíkonektor CN4 vlevéčásti (2).Horníčásttakéobsahujepřevodníkkomunikacez USB na UART ,jehožvývody CN3 jsouvpravoodprogramovacíhokonektoru (3).Anijedenztěchtokonektorůnenítřebapoužívat,jelikožprogramátoripřevodníkjsouskontrolerem spojenymůstkymezihorníadolníčástídesky.Převodníkjespojensperiferiíkontroleru USART2 ,kterou budemepoužívatvevšechpříkladechkomunikujícíchspočítačem.

KroměLED,kterésignalizujífunkciprogramátoruasprávnénapájení,jenadesceumístěnatakéjedna uživatelskáLED LD2 (6),kteroulzepinemmikrokontroleruovládat.TutoLEDbudemepoužívatvevšech příkladech,kdesebudepracovatsnastavenímvýstupníhodnotysignálu.LEDjepřipojenanapin PA5 .

Propříkladyvtétoknizenenípotřebaznátdalšídetailyotétovývojovédesceaninaníniczapojovat. Budestačitjipouzepřipojit.

2.2Vývojovéprostředí

Jakjižbylozmíněno,výrobcečipuposkytujezdarmavývojovéprostředí STM32CubeIDE,vekterém jsouvytvořenyvšechnypříkladytétoknihy.

Totoprostředívsoběobsahujekonfigurátorperiferiíčipu,programováníasprávuprojektu,nahráníprogramudomikrokontroleruamožnostjeholadění(debuggování).

Sinstalacívývojovéhoprostředíseautomatickynainstalujeiovladačprogramátoru,kterýjeumístěnýna Nucleodesce,apřekladačzezdrojovéhokódunastrojový.

STM32CubeIDE jemožnéporegistracinawebovýchstránkáchfirmySTMicroelectronicsstáhnout zcelazdarma.Nejsnazšímzpůsobemnalezeníodkazukestaženíjezadatdointernetovéhovyhledávačeheslo "STM32CubeIDE"apravděpodobněhnedprvníodkazbudemířitnasprávnoustránku,kdenajdetetakénávod nainstalaciamanuálkpoužití.

Snadnenínutnépopisovatinstalacivývojovéhoprostředí,kterájeplněautomatickáanainstalujeivšechny nutnéovladače.

2.3Shrnutí

Popřečtenítétokapitolybymělmítčtenářkúspěšnémunaprogramovánípříkladůuvedenýchvtétoknize připravenynásledujícínejnutnějšívěci:

• vývojovoudesku NUCLEO-L07RZ,

• USBkabel kpřipojenídeskyvpočítačia

• počítačsnainstalovanýmvývojovýmprostředím STM32CubeIDE.

Stoutonezbytnouvýbavou,jemožnésesmělepustitdočtenínásledujícíchkapitol,kteréodhalujípoužívání operačníhosystému FreeRTOS

Kapitola3

FreeRTOSobecně

FreeRTOS (FreeRealTimeOperatingSystem)jeoperačnísystémpracujícívreálnémčaseurčený předevšímproprogramyběžícínamikrokontrolerech.Operačnísystémjeupravenpromnohopřekladačůa několikdesítekarchitekturmikrokontrolerů.

Operačnísystémfungujejakoskupinaknihoven,jejichžfunkceumožňujímultitasking.Multitaskingje prováděnpomocívláken,jejichžprogrammůžeprobíhatparalelně.Operačnísystémdálenabízíširokouškálu nástrojůnasynchronizacivláken,přenosdatmezinimiadalšíužitečnémožnosti.

FreeRTOS máotevřenoulicenci,jetedyzcelazdarmaajemožnéjejvyužítprokomerčníaplikace.

Operačnísystémjemožnéstáhnoutzwebovéstránky: https://www.freertos.org/index.html

3.1Strukturasouborů

FreeRTOS fungujejakoskupinaknihovenpsanýchvjazyceC.Pokudchcemevyužívatoperačnísystém, musímesevnašemprogramuodkázatnatytoknihovny,respektivejejichhlavičkovésoubory.

Postáhnutíarchivusoperačnímsystémemzodkazuuvedenémvýševněmnaleznemetentoobsah.

Vesložce Demo senacházívelkémnožstvíukázkovýchfunkčníchprojektů.Jemožnésejiminechatinspirovatpřitvorběvlastníhoprojektu.Alejakuvidíme,vývojovéprostředípronásprojektjižpřipraví.

Vesložce FreeRTOS/Source naleznemenásledujícísložkyasoubory:

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.