📄 tasks.c
字号:
/**********************************************************************************************
file : Tasks.c
Author : Farid LEZIAR ( fleziar@yahoo.fr )
Date : July 2002
This file contains Tasks's implementations of the Test Port
**********************************************************************************************/
#include "includes.h"
#include "Tasks.h"
/*********************************************************************************************
void Task1();
Initializes the timer, starts statistic task and creates other tasks
This Task prints message every second and never stops.
*********************************************************************************************/
void Task1 (void *pdata)
{
INT8U err;
INT32U cpt = 0;
// printf("before start ticks");
printf("--- test begin --- \n");
OSNiosStartTicks((void*)ND_TIMER); /* starts the timer */
// printf("\nhere task1 afer start ticks\n");
if (OSNiosInstallUserISR(20, UserTimerISR))
{
((np_timer*)na_timer_1)->np_timerperiodl = 0xFFFF & (nasys_clock_freq/1);
((np_timer*)na_timer_1)->np_timerperiodh = 0xFFFF & ((nasys_clock_freq/1)>>16);
((np_timer*)na_timer_1)->np_timercontrol = np_timercontrol_cont_mask | np_timercontrol_start_mask | np_timercontrol_ito_mask;
}
// Creates other Tasks
OSTaskCreateExt(Task2, (void*)0, &Task2Stk[TASK_STACKSIZE-1], 20,
20, &Task2Stk[0], TASK_STACKSIZE, (void*)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(Task3, (void*)0, &Task3Stk[TASK_STACKSIZE-1], 30,
30, &Task3Stk[0], TASK_STACKSIZE, (void*)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
/*
na_timer_1->np_timerperiodl=(short)(nasys_clock_freq & 0x0000ffff);
na_timer_1->np_timerperiodh=(short)((nasys_clock_freq >>16) & 0x0000ffff);
na_timer_1->np_timercontrol=np_timercontrol_start_mask + np_timercontrol_cont_mask;
*/
while(1)
{
printf("A : 1111 after 1 second \n", cpt++);
OSTimeDlyHMSM(0,0,0,10); /* Waits 1 second */
// if (cpt > 5) OSTaskDel(OS_PRIO_SELF); /* terminates current task */
}
}
/*********************************************************************************************
void Task2();
This Task prints message every 2 seconds and never stops.
*********************************************************************************************/
void Task2 (void *pdata)
{
INT32U cpt = 0;
while(1)
{
printf("B : 2222 after 2 seconds \n", cpt++);
OSTimeDlyHMSM(0,0,0,20);
}
}
/*********************************************************************************************
void Task3();
This Task prints message every 4 seconds and never stops.
*********************************************************************************************/
void Task3 (void *pdata)
{
INT32U cnt = 0;
while(1)
{
printf("C : cnt = %d after 4 seconds \n", cnt++);
OSTimeDlyHMSM(0,0,0,40);
}
}
/*********************************************************************************************
void UserTimerISR();
This functions is C User ISR.
*********************************************************************************************/
void UserTimerISR()
{
((np_timer*)na_timer_1)->np_timerstatus = 0; /* clears the interrupt */
printf("UserTimerISR() : irq = %d\n", getIPRI());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -