FreeRTOS: рдкрд░рд┐рдЪрдп


рдирдорд╕реНрддреЗ рдкреЛрд╕реНрдЯ рдХреА рдПрдХ рдЫреЛрдЯреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдореИрдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ RTOS рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ - рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ред рдореИрдВ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рд╛рде рдкрд╛рдардХ рдХреЗ рдореВрд▓ рдкрд░рд┐рдЪрд┐рдд рдХреЛ рдорд╛рдирддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ Habr├й рдпрд╛ рдЕрдиреНрдп рдЬрдЧрд╣реЛрдВ рдкрд░ рдкрдбрд╝реЛрд╕реА рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ:
FreeRTOS: рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ред
FreeRTOS: рдореНрдпреВрдЯреЗрдХреНрд╕ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдбред

рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ? рдпрд╛ FreeRTOS рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рд╕реЗ рдорд▓реНрдЯреА-рдЯрд╛рд╕реНрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдЪрдпред

рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреЗ 2 рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ:

рд╕реЙрдлреНрдЯ рдХрдВрдкреНрдпреВрдЯрд░ рд╣рдорд╛рд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдЖрдкрдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛рдиреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рд╡рд╣ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдХ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЙрд╕рдиреЗ рдмрдЯрди рджрдмрд╛рдпрд╛ рдФрд░ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреЗрдЦреА, рддреЛ OS "рдХрд╛рд░реНрдп рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ (рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛) "рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ" рдЙрддреНрддрд░ "), рд▓реЗрдХрд┐рди OS рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд░рд╣рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реЙрдлреНрдЯ-рдЯрд╛рдЗрдо рдЖрд░рдЯреАрдУрдПрд╕ рдХреЗрд╡рд▓ рдЕрдиреБрдорд╛рдирд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдУрдПрд╕ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдХрдард┐рди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд░рдЯреАрдУрдПрд╕ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдЖрд░рдЯреАрдУрдПрд╕ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рдорд╛рдпрдиреЛрдВ рдореЗрдВ, рд╡реЗ рдЖрд░рдЯреАрдУрдПрд╕ рдкрд░ рдбреЗрд╕реНрдЯреЙрдкреНрд╕ (рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдирд┐рд╖реНрдкрд╛рджрди) рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдореБрдЦреНрдп рдЕрдВрддрд░ рднреА рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рд╕рдордп рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП , рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдкрддрди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред

рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ?

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реЗрдВрд╕рд░ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рддреБрдЪреНрдЫ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрддрд╛ рдирд╣реАрдВ рдХрд┐рддрдирд╛ рд╣реИ, рддреЛ рдЖрд░рдЯреАрдУрдПрд╕ рдЖрдкрдХреА рдкрд╕рдВрдж рд╣реИред

рдЖрд░рдЯреАрдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдЖрд░рдЯреАрдУрдПрд╕ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЖрд░рдЯреАрдУрдПрд╕ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (1 рд╕реЗрдВрд╕рд░ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рднреЗрдЬреЗрдВ, 1% рдкреНрд░реЗрд╕ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВ, рдЖрджрд┐) рдЗрд╕рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЕрддрд┐рд░реЗрдХ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдб рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рджреЛрдиреЛрдВ рд╣реЛрдЧрд╛ред

рдХрд╛рд░реНрдпреЛрдВ (рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред

рдЖрдЧреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдХреБрдЫ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рджреВрдВрдЧрд╛:

" рд░реАрдпрд▓-рдЯрд╛рдЗрдо рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (RTOS) рдХреЛ рдЯрд╛рдЗрдо-рдХреНрд░рд┐рдЯрд┐рдХрд▓ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рд╕рдордпрдмрджреНрдзрддрд╛ рд╣реИред"
" FreeRTOS рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдорд▓реНрдЯреА-рдЯрд╛рд╕реНрдХрд┐рдВрдЧ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (RTOS) рд╣реИред рдЗрд╕реЗ рдХрдИ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ andrewsh habrayuzer рд╕реЗ: рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ OS рдХреЗ рд▓рд┐рдВрдХ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж FreeRTOS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рди рдХрд░реЗрдВред RTOS рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╣рдореЗрд╢рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рднреА рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред "

FreeRTOS рдХреЛ C рдореЗрдВ рдереЛрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб (рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ) рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХреЛрд░ рдХреЛ рдХреЗрд╡рд▓ 3 C рдлрд╛рдЗрд▓реЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд▓реЛ рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЛред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдХрд╛рд░реНрдп C рдлрд╝рдВрдХреНрд╢рди рд╣реИ:

void vTask( void *pvParametres ); 

рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдорд┐рдиреА рдЙрдкрдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрдкрдирд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рд╕реНрдЯреИрдХ рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЙрдирдХрд╛ рдЕрдкрдирд╛ рд╕реНрдЯреИрдХ рднреА рд╣реЛрдЧрд╛ред

рдХрд╛рд░реНрдп рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╡рд╛рдкрд╕реА рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ; рдирд┐рд░реНрдорд╛рдг, рдФрд░ рдпрджрд┐ рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди API рдХреЙрд▓ рдХрд░рдХреЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХрдВрдХрд╛рд▓ рджрд┐рдЦрд╛рддреА рд╣реИ:
 void vTask( void *pvParametres) { /*       ,   .        someVar.   ,      . */ int someVar; //     -     ,      . for( ;; ) { //   } //            ,        ,   . //  vTaskDelete      ,   . //       NULL,   vTaskDelete( NULL ); } 

рдХрд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрд╕реЗ рдЕрдиреБрд╕реВрдЪрдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ API рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pxCreatedTask ); 


pvTaskCode - рдЪреВрдВрдХрд┐ рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рдПрдХ C рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорд╛рди рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред

PCName рдХрд╛рд░реНрдп рдХрд╛ рдирд╛рдо рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХрд╣реАрдВ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдИрдбреАрдИ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рд╣реЛрддрд╛ рд╣реИред

usStackDepth - рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдорд┐рдиреА рд░реВрдЯреАрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрд╕рдХреА рдЧрд╣рд░рд╛рдИ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред RTOS рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдФрд░ рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ FreeRTOSConfig.h рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк OS рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдиреЗ рдирд┐рд░рдВрддрд░ рдорд╛рди configMINIMAL_STACK_SIZE рднреА рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░рдХ рдХреЗ рд╕рд╛рде usStackDepth рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

pvParameters - рдЬрдм рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ, рдореВрд▓реНрдпреЛрдВ, рдпрд╛ рдХреБрдЫ рдФрд░ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдп рдХреЗ рд╢рд░реАрд░ рдХреЗ рдЕрдВрджрд░ рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдФрд░ рдпрд╣ рдЧреБрдЬрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛, рдпрд╛ NULL рдпрджрд┐ рдЖрдкрдХреЛ pvParameters рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рднреА рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

uxPriority - рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреА рдЕрдкрдиреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, 0 (рдиреНрдпреВрдирддрдо) рд╕реЗ ( configMAX_PRIORITIES - 1)ред рдЪреВрдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдКрдкрд░реА рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд░реИрдо рдХреА рдЦрдкрдд рди рд╣реЛред

pxCreatedTask - рдмрдирд╛рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ред рдХрд╛рд░реНрдп рдмрдирд╛рддреЗ рд╕рдордп, рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд╣реИрдВрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рдж рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдПред

рдпрд╣ рдХрд╛рд░реНрдп рд╕рдлрд▓ рдХрд╛рдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ , рдЕрдЧрд░ рд╕реНрдЯреИрдХ рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╛рдиреА, iCOULD_NOT_ALLOCATE_REQUIRED_MEMORY , рддреЛ рдпрд╣ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдвреЗрд░, рдФрд░ рдХрд╛рд░реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдвреЗрд░ рдирд╣реАрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рддреИрдпрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ 2 рдХрд╛рд░реНрдп рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдПрд▓рдИрдбреА рдлреНрд▓реИрд╢ рдХрд░рддрд╛ рд╣реИ:
 void vGreenBlinkTask( void *pvParametrs ) { for( ;; ) { P8OUT ^= BIT7; //    700 FreeRTOS .      FreeRTOSConfig.h     1. vTaskDelay( 700 ); } } void vRedBlinkTask( void *pvParametrs ) { for( ;; ) { P8OUT ^= BIT6; //    1000 FreeRTOS .      FreeRTOSConfig.h     1. vTaskDelay( 1000 ); } } void main(void) { //  .      . vInitSystem(); //  .      ,      ! xTaskCreate( &vGreenBlinkTask, (signed char *)"GreenBlink", configMINIMAL_STACK_SIZE, NULL, 1, NULL ); xTaskCreate( &vRedBlinkTask, (signed char *)"RedBlink", configMINIMAL_STACK_SIZE, NULL, 1, NULL ); //   .   . vTaskStartScheduler(); //      ,      . //       . for( ;; ) { } } 


рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

Source: https://habr.com/ru/post/In129105/


All Articles