Muxammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti samarqand filiali axborot ta’lim texnologiyalari kafedrasi


Download 0.62 Mb.
Sana15.06.2023
Hajmi0.62 Mb.
#1481538

MUXAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
SAMARQAND FILIALI
AXBOROT TA’LIM TEXNOLOGIYALARI KAFEDRASI

5330501- Kompyuter injiniring ta'lim yo'nalishi

Real vaqt tizimlari” fanidan




AMALIY MASHG’ULOT
5

Bajardi:Mamadaliyev Y.
Guruh: 101-19 KI
Qabul qildi: Xolmatov O.

Samarqand – 2023


AMALIYOT №5.
Mavzu:FreeRTOS da vazifalar yaratish
Parametrlar bilan vazifa yaratish. FreeRTOS-da ko'plab API mavjud. Lekin eng asosiysi - bu vazifa yaratish. Chunki tizim ishga tushganda vazifalar bir vaqtda ishlaydi. Shunday qilib, bugun biz oddiy vazifa yaratishni ko'rib chiqamiz.
xTaskCreate. Ushbu FreeRTOS API vazifa yaratish uchun ishlatiladi. Ushbu API yordamida biz ko'proq vazifalarni
portBASE_TYPE xTaskCreate (pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pxCreatedTask );

  • pvTaskCode: vazifa amalga oshirilayotgan funktsiyaga ko'rsatgich. (Funktsiya manzili)

  • pcName: vazifaga berilgan nom. Bu FreeRTOS uchun foydasiz, lekin faqat disk raskadrovka uchun mo'ljallangan.

  • usStackDepth: bu vazifa uchun stek uzunligi so'zlar bilan ifodalanadi. Stackning haqiqiy hajmi mikro kontrollerga bog'liq.

  • pvParameters: vazifaga berilgan argumentlarga ko'rsatgich.

  • uxPriority: vazifaga berilgan ustuvorlik, 0 va MAX_PRIORITIES orasidagi raqam – 1.

  • pxCreatedTask: vazifani bajarishga imkon beruvchi identifikatorga ko'rsatgich. Agar vazifani kelajakda hal qilish kerak bo'lmasa, uni NULL deb qo'yish mumkin.

vTaskDelay. Biz ushbu APIni kechiktirish maqsadida foydalanmoqdamiz.
void vTaskDelay( TickType_t xTicksToDelay );
xTicksToDelay: Qo'ng'iroq vazifasi tayyor holatga o'tishdan oldin Bloklangan holatda qolishi to'xtatilgan belgilar soni. Misol uchun, agar belgi soni 10 000 bo'lganida vTaskDelay( 100 ) deb nomlangan vazifa bo'lsa, u darhol Bloklangan holatga o'tadi va belgilar soni 10,100 ga yetguncha Bloklangan holatda qoladi. vTaskDelay() chaqirilishi va keyingi belgi uzilishi o'rtasida qolgan har qanday vaqt bitta to'liq belgilash davri sifatida hisoblanadi. Shuning uchun, kechikish davrini belgilashda erishish mumkin bo'lgan eng yuqori vaqt aniqligi, eng yomon holatda, bitta to'liq belgini uzish davriga teng. PdMS_TO_TICKS() makrosidan millisekundlarni belgiga aylantirish uchun foydalanish mumkin.
vTaskStartScheduler. FreeRTOS rejalashtiruvchisini ishga tushiradi.
Odatda, rejalashtiruvchi ishga tushirilgunga qadar main() (yoki main() tomonidan chaqiriladigan funksiya) bajariladi. Rejalashtiruvchi ishga tushirilgandan so'ng, faqat vazifalar va uzilishlar bajariladi. Rejalashtiruvchini ishga tushirish rejalashtirish vaqtida yaratilgan eng yuqori ustuvor vazifani keltirib chiqaradi
Ishlayotgan holatga kirish uchun Initializatsiya holatida edi.
void vTaskStartScheduler( void );
Ushbu kodda men turli parametrlarga ega faqat bitta vazifani yaratmoqchiman.


print_task
Bu vazifa ketma-ket aloqada argumentlarni chop etadi. Bu erda men faqat asosiy faylni qo'shyapman. Toʻliq loyihani yuklab olishni istasangiz, bu yerga tashrif buyuring (GitHub).
#include
#include "FreeRTOS.h"
#include "task.h"
#include "uart0.h"
void print_task(void *q);
void initpll(void);
int main(void)
{
initpll();
initserial();
xTaskCreate(print_task,"task1",128,"Task1 functioning",1,NULL);
xTaskCreate(print_task,"task2",128,"Task2 functioning",2,NULL);
vTaskStartScheduler();
}
void print_task(void *q)
{
unsigned char *p;
while(1) {
p=(unsigned char *)q;
sendsserial(p);
sendsserial("\r\n");
vTaskDelay(1000);
}
}

void initpll(void)


{
PLL0CON=0x01;
PLL0CFG=0x24;
PLL0FEED=0xAA;
PLL0FEED=0x55;
while(!(PLL0STAT&1<<10));
PLL0CON=0x03;
PLL0FEED=0xAA;
PLL0FEED=0x55;
VPBDIV=0x01;
}

Topshiriq

1-rasm. Sxemaning yasalishi

2-rasm. Dastur qismi

3-rasm. Natija
Download 0.62 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling