⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tasks.c

📁 nios开发ucos源码
💻 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 + -