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

📄 app.c

📁 本人写的ATMEL 128 UC/OSII移植程序
💻 C
字号:

#include  "includes.h"


OS_STK  AppTaskStartStk[OS_TASK_START_STK_SIZE];
OS_STK AppTask1Stk[OS_TASK_1_STK_SIZE];
OS_STK AppTask2Stk[OS_TASK_2_STK_SIZE];
OS_STK KeyScanTaskStk[OS_TASK_4_STK_SIZE];


void AppTaskStart(void *p_arg);

void AppTask1(void *p_arg);
void AppTask2(void *p_arg);
void KeyScanTask(void *p_arg);
void loading_display(void);

void  main (void)
{
  OSTaskStkSize     = OS_TASK_IDLE_STK_SIZE;       /* Setup the default stack size                        */
  OSTaskStkSizeHard = OS_TASK_IDLE_STK_SIZE_HARD;  /* Setup the default hardware stack size               */

  BSP_Init();
  DispInit();
  loading_display();
  KeyBoard_Init();

  OSInit();

  KeySemPtr = OSSemCreate(0);
  DispSem = OSSemCreate(1);

  OSTaskStkSize = OS_TASK_START_STK_SIZE;
  OSTaskStkSizeHard = OS_TASK_START_STK_SIZE_HARD;
  OSTaskCreate(AppTaskStart,(void*)0,&AppTaskStartStk[OSTaskStkSize-1],OS_TASK_START_PRIO);

  OSTaskStkSize     = OS_TASK_1_STK_SIZE;        /* Setup the default stack size                     */
  OSTaskStkSizeHard = OS_TASK_1_STK_SIZE_HARD;   /* Setup the default hardware stack size            */
  OSTaskCreate(AppTask1,(void*)0,(OS_STK*)&AppTask1Stk[OSTaskStkSize - 1],OS_TASK_1_PRIO);

  OSTaskStkSize     = OS_TASK_2_STK_SIZE;        /* Setup the default stack size                     */
  OSTaskStkSizeHard = OS_TASK_2_STK_SIZE_HARD;   /* Setup the default hardware stack size            */
  OSTaskCreate(AppTask2,(void*)0,(OS_STK*)&AppTask2Stk[OSTaskStkSize - 1],OS_TASK_2_PRIO);

  OSTaskStkSize = OS_TASK_4_STK_SIZE;
  OSTaskStkSizeHard = OS_TASK_4_STK_SIZE_HARD;
  OSTaskCreate(KeyScanTask,(void*)0,(OS_STK*)&KeyScanTaskStk[OSTaskStkSize-1],OS_KEY_PRIO);


  OSStart();
}

void AppTaskStart(void *p_arg)
{
  p_arg = p_arg;
  BSP_Init();
  while(1)
  {
    BSP_InitTickISR();
    OSTimeDly(100);
  }
}

void AppTask1(void *p_arg)  //for keyboard test
{
  uchar temp,count = 0;
  p_arg = p_arg;
  while(1)
  {
    if (KeyHit())
    {
      temp = KeyGetKey(0);
      if (temp != 0xff)
      {
        beeper(170,170);
        DispClrCol(count);
        DispClrRow(count);
        if (count<16)
        {
         count++;
        }
        else
        {
         count =0;
         loading_display();
        }
      }
    }
    OSTimeDlyHMSM(0,0,0,200);
  }
}

void AppTask2(void *p_arg)
{
  p_arg = p_arg;
  while(1)
  {
    blink();
    OSTimeDlyHMSM(0,0,0,200);
  }
}

void  KeyScanTask (void *data)
{
  INT8U code;
  data = data;                                           /* Avoid compiler warning (uC/OS-II req.)   */
    while(1)
    {
        OSTimeDlyHMSM(0, 0, 0, 200 );         /* Delay between keyboard scans             */
        switch (KeyScanState) {
            case KEY_STATE_UP:                             /* See if need to look for a key pressed    */
                 if (KeyIsKeyDown()) {                     /* See if key is pressed                    */
                     KeyScanState = KEY_STATE_DEBOUNCE;    /* Next call we will have debounced the key */
                     KeyDownTmr   = 0;                     /* Reset key down timer                     */
                 }
                 break;

            case KEY_STATE_DEBOUNCE:                       /* Key pressed, get scan code and buffer    */
                 if (KeyIsKeyDown()) {                     /* See if key is pressed                    */
                     code              = KeyDecode();      /* Determine the key scan code              */
                     KeyBufIn(code);                       /* Input scan code in buffer                */
                     KeyRptStartDlyCtr = KEY_RPT_START_DLY;/* Start delay to auto-repeat function      */
                     KeyScanState      = KEY_STATE_RPT_START_DLY;
                 } else {
                   KEY_SCAN_ENABLE();
                   KEY_SCAN_OUT=0x00;
                   KEY_SCAN_DISABLE();
                   KeyScanState      = KEY_STATE_UP;     /* Key was not pressed after all!           */
                 }
                 break;

            case KEY_STATE_RPT_START_DLY:
                 if (KeyIsKeyDown()) {                     /* See if key is still pressed              */
                     if (KeyRptStartDlyCtr > 0) {          /* See if we need to delay before auto rpt  */
                         KeyRptStartDlyCtr--;              /* Yes, decrement counter to start of rpt   */
                         if (KeyRptStartDlyCtr == 0) {     /* If delay to auto repeat is completed ... */
                             code         = KeyDecode();   /* Determine the key scan code              */
                             KeyBufIn(code);               /* Input scan code in buffer                */
                             KeyRptDlyCtr = KEY_RPT_DLY;   /* Load delay before next repeat            */
                             KeyScanState = KEY_STATE_RPT_DLY;
                         }
                     }
                 } else {
                     KeyScanState = KEY_STATE_DEBOUNCE;    /* Key was not pressed after all            */
                 }
                 break;

            case KEY_STATE_RPT_DLY:
                 if (KeyIsKeyDown()) {                     /* See if key is still pressed              */
                     if (KeyRptDlyCtr > 0) {               /* See if we need to wait before repeat key */
                         KeyRptDlyCtr--;                   /* Yes, dec. wait time to next key repeat   */
                         if (KeyRptDlyCtr == 0) {          /* See if it's time to repeat key           */
                             code         = KeyDecode();   /* Determine the key scan code              */
                             KeyBufIn(code);               /* Input scan code in buffer                */
                             KeyRptDlyCtr = KEY_RPT_DLY;   /* Reload delay counter before auto repeat  */
                         }
                     }
                 } else {
                     KeyScanState = KEY_STATE_DEBOUNCE;    /* Key was not pressed after all            */
                 }
                 break;
        }
    }
}


void loading_display(void)
{
   DispClrScr();
   /*DispChar(24,72,21,1);//L
   DispChar(32,72,50,1);//o
   DispChar(40,72,36,1);//a
   DispChar(48,72,39,1);//d
   DispChar(56,72,44,1);//i
   DispChar(64,72,49,1);//n
   DispChar(72,72,42,1);//g
*/
   DispCharColor(24,104,21,1,255,0,0);//L
   DispCharColor(32,104,50,1,0,255,0);//o
   DispCharColor(40,104,36,1,0,0,255);//a
   DispCharColor(48,104,39,1,255,255,0);//d
   DispCharColor(56,104,44,1,0,255,255);//i
   DispCharColor(64,104,49,1,255,0,255);//n
   DispCharColor(72,104,42,1,0,0,0);//g
   //DispClrScr();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -