xTaskCreate() API funktsiyasi Har bir vazifaning o'ziga xos holati mavjud bo'lib, u vazifa yaratilganda yadro tomonidan vazifaga
ajratiladi. usStackDepth qiymati yadroga stekni qanchalik katta qilish kerakligini aytadi.
Yuqoridagi uxPriority qiymatini (configMAX_PRIORITIES - 1) o'tkazish, vazifaga tayinlangan haqiqiy ustuvorlikning maksimal qonuniy qiymatga jimgina cheklanishiga olib keladi.
Qiymat
configMAX_PRIORITIES foydalanuvchi tomonidan belgilangan doimiydir. Mavjud bo'lishi mumkin bo'lgan ustuvorliklar sonining yuqori chegarasi yo'q (ishlatilgan ma'lumotlar turlarining chegarasi va mikrokontrolleringizda mavjud RAMdan tashqari), lekin siz RAMni isrof
qilmaslik uchun haqiqatda talab qilinadigan eng kam ustuvorliklardan foydalanishingiz kerak. .
Ism/Qaytarilgan
Vazifa bajariladigan ustuvorlikni belgilaydi. Ustuvorliklar eng past ustuvorlik bo'lgan 0 dan (configMAX_PRIORITIES - 1) gacha, bu eng yuqori ustuvorlikka tayinlanishi mumkin.
Parametr
Vazifa funktsiyalari void ( void* ) ko'rsatkichi tipidagi parametrni qabul qiladi. pvParameters
ga tayinlangan qiymat vazifaga o'tgan qiymat bo'ladi. Ushbu hujjatdagi ba'zi misollar parametrdan qanday foydalanish mumkinligini ko'rsatadi.
Vazifa uchun zarur bo'lgan stek maydonini aniqlashning oson usuli yo'q. Hisoblash mumkin, lekin ko'pchilik foydalanuvchilar o'zlari o'ylagan qiymatni shunchaki belgilashadi, keyin FreeRTOS tomonidan taqdim etilgan xususiyatlardan foydalanib, ajratilgan bo'sh joy
haqiqatan ham etarli ekanligini va RAM keraksiz ravishda isrof qilinmasligini ta'minlaydi. 6-BOB vazifa tomonidan ishlatiladigan stek maydonini qanday so'rash haqida ma'lumotni o'z ichiga oladi.
Tavsif
Bo'sh turgan vazifa tomonidan foydalaniladigan stekning o'lchami ilova tomonidan belgilangan doimiy configMINIMAL_STACK_SIZE bilan belgilanadi. Foydalanilayotgan mikrokontroller arxitekturasi uchun FreeRTOS demo ilovasida ushbu konstantaga tayinlangan qiymat har qanday vazifa uchun tavsiya etilgan minimal qiymatdir. Agar vazifangiz juda ko'p stek maydoni ishlatsa, siz kattaroq qiymat belgilashingiz kerak bo'ladi.
pvParameters
1-jadval xTaskCreate() parametrlari va qaytariladigan qiymat
Qiymat baytlar sonini emas, balki stek sig'adigan so'zlar sonini bildiradi. Misol uchun, agar stek kengligi 32 bit bo'lsa va usStackDepth 100 sifatida uzatilsa, u holda 400 bayt stek maydoni ajratiladi (100 * 4 bayt). Stak chuqurligi stek kengligiga ko'paytirilsa, size_t tipidagi o'zgaruvchida bo'lishi mumkin bo'lgan maksimal qiymatdan oshmasligi kerak.
2.NAVBATNI BOSHQARISH. FreeRTOS-dan foydalanadigan ilovalar mustaqil vazifalar to'plami sifatida tuzilgan - har bir vazifa samarali tarzda o'ziga xos mini dasturdir. Ehtimol, ushbu avtonom vazifalar to'plami birgalikda tizimning foydali funktsiyalarini ta'minlashi uchun bir-biri bilan bog'lanishi kerak.
• Navbatga yozish va undan keyin o'qishda vazifa ustuvorliklarining ta'siri.
• Navbatni qanday yaratish kerak.
• Navbatda blokirovka qilish nimani anglatadi.
Ushbu bobda faqat vazifadan vazifaga aloqasi yoritilgan. Vazifa aloqasini to'xtatish va to'xtatish vazifasi 3-BOBda yoritilgan.
Navbatlar barcha FreeRTOS aloqa va sinxronizatsiya mexanizmlari tomonidan qo'llaniladigan asosiy elementdir.
• Navbat o'z ichiga olgan ma'lumotlarni qanday boshqaradi.