亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 基于lpc2104+μcos-ii操作系統代碼.c

?? 關于uc/os嵌入式操作系統中的例程
?? C
字號:
基于學習ARM和μC/OS-II,已成功移植μC/OS-II到LPC2104上。采用ADS1.2編譯器。建立5個任務:

    任務1: 讀/寫卡(視頻卡),優先級最高。
    任務2: 接收PC命令,命令分析
    任務3: 顯示
    任務4: 負責返回數據給PC
    任務5: 數據存儲

/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*
*                           (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
*                                           All Rights Reserved
*
*                                               EXAMPLE #1
*********************************************************************************************************
*/
#include "includes.h"
#include  "config.h"
#include  "harder.h"
#include  "libvic.h"
#include  "libuart.h"
#include  "uart.h"
#include "main.h"
#include "zlg500B.h"
#include "myconfig.h"
#include "OS_CPU.h"
#include "libi2c.h"
/*
*********************************************************************************************************
*                                            GLOBAL VARIABLES
*********************************************************************************************************
*/
#define  COM2  2

#define  COMM_RX_BUF_SIZE1      64                /* Number of characters in Rx ring buffer             */
#define  COMM_TX_BUF_SIZE1      64      

typedef struct {
    INT16U     RingBufRxCtr;                /* Number of characters in the Rx ring buffer              */
    OS_EVENT  *RingBufRxSem;                /* Pointer to Rx semaphore                                 */
    INT8U     *RingBufRxInPtr;              /* Pointer to where next character will be inserted        */
    INT8U     *RingBufRxOutPtr;             /* Pointer from where next character will be extracted     */
    
    INT8U     RxStep;
    INT8U     RxIndex;
    INT8U     RxBCC;
    INT8U     RxLen;
    
    INT8U     ACKIN;
    INT8U     ZLG500InFlag;
            
    INT8U     RingBufRx[COMM_RX_BUF_SIZE1]; /* Ring buffer character storage (Rx)            */
    INT8U     databuf[16];
        
    INT16U     RingBufTxCtr;                /* Number of characters in the Tx ring buffer              */
    OS_EVENT  *RingBufTxSem;                /* Pointer to Tx semaphore                                 */
    INT8U     *RingBufTxInPtr;              /* Pointer to where next character will be inserted        */
    INT8U     *RingBufTxOutPtr;             /* Pointer from where next character will be extracted     */
   
    INT8U      TxStep;
    INT8U      TxIndex;
    INT8U      TxLen;
    INT8U      ZLG500OutFlag;
    
    INT8U      TxBCC;
    INT8U      RingBufTXBusy; 
    
    INT8U      RingBufTx[COMM_TX_BUF_SIZE1]; /* Ring buffer character storage (Tx)                      */
                  
    
} COMM_RING_BUF1;


COMM_RING_BUF1  MyComm1Buf;


INT8U     Nkey_b[6];
INT32U flag;
uchar BCC_sum;
uchar newdata;
uchar MifrStep;
uchar card_snr[8];
uchar databuf[16];
uchar I2cDataBuf[16];
extern void ARMDisableInt(void);
extern void ARMEnableInt(void);
/*
*********************************************************************************************************
*                                               CONSTANTS
*********************************************************************************************************
*/

#define  TASK_STK_SIZE                  128      /* Size of each task's stacks (# of WORDs)            */

/*
*********************************************************************************************************
*                                               VARIABLES
*********************************************************************************************************
*/

OS_STK        TaskStartStk[TASK_STK_SIZE];
OS_STK        Task1Stk[256];
OS_STK        Task2Stk[TASK_STK_SIZE];
OS_STK        Task3Stk[TASK_STK_SIZE];
OS_STK        Task4Stk[TASK_STK_SIZE];
OS_STK        Task5Stk[TASK_STK_SIZE];

OS_EVENT      *Mbox1;
OS_EVENT      *Mbox2;

/*
*********************************************************************************************************
*                                           FUNCTION PROTOTYPES
*********************************************************************************************************
*/

        void  Task1(void *data); /* Function prototypes of tasks  */
        void  Task2(void *data);
        void  Task3(void *data);
        void  Task4(void *data);
        void  Task5(void *data);  /* Function prototypes of tasks                  */
        void  TaskStart(void *data);                  /* Function prototypes of Startup task           */
        
        //uchar ShakeHand1(void);
        void InitUart0(void);
        
/*$PAGE*/ 
/*
*********************************************************************************************************
*                                                MAIN
*********************************************************************************************************
*/
void TargetInit(void);

int main (void)
{

    OSInit(); 
    Beep(3);  
    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
    OSStart();                                             /* Start multitasking                       */
}

/*
*********************************************************************************************************
*                                              STARTUP TASK
*********************************************************************************************************
*/
void  TaskStart (void *pdata)
{
   
   pdata = pdata; 
//目標初始化   
   TargetInit(); 
//I2C初始化   
//串口初始化   
   Mbox1 = OSMboxCreate(NULL); 
   Mbox2 = OSMboxCreate(NULL); 
   InitUart0();    //關中斷   
   ComInit(COM2,57600); 
   I2cInit(100000);   
   OSTaskCreate(Task5, (void *)0, &Task5Stk[TASK_STK_SIZE - 1], 1);
   OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1], 2);
   OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1], 3);
   OSTaskCreate(Task3, (void *)0, &Task3Stk[TASK_STK_SIZE - 1], 4);
   OSTaskCreate(Task4, (void *)0, &Task4Stk[TASK_STK_SIZE - 1], 5);
   
   flag=mifs_close();
   flag=mifs_config();
   flag=mifs_get_info(MyComm1Buf.databuf);
   flag=mifs_load_key(KEYB,1,Nkey_b);
   flag=mifs_load_key(KEYB,5,Nkey_b);
   flag=mifs_read_E2(0x7f,1,MyComm1Buf.databuf);
   if(flag ==0){
    Beep(1); 
    OSTaskDel(0);  
   }    
}

/*
************************************
*
************************************
*/


/*
************************************
*I2C操作
************************************
*/
void  Task1 (void *pdata)
{
  
   uchar i;  
   char *Msg=NULL;
   INT8U err;
   INT16U CNT; 
   pdata = pdata;    
                                          
   SetPinMode(LED2,0,0);      //LED2 =11 
   SetPinMode(LED3,0,0);
   SetPinMode(LED4,0,0);
   SetPin(LED1);
   SetPin(LED2);
   SetPin(LED3);
   SetPin(LED4);
   for (;;)
     {      
      
       Msg = (char *)OSMboxPend(Mbox1, 0, &err); //等待消息!
       if(err == OS_NO_ERR)
       {  // 收到消息,處理消息
       if((Msg[0]=='R')&&(Msg[1]=='E')&&(Msg[2]=='A')&&(Msg[3]=='D'))
       {
        I2cDataBuf[0] = 0;   // 從機地址
        CNT= I2cRead(CSI24WC02, I2cDataBuf, I2cDataBuf, 1, 10);
        if(CNT==10){ 
          Msg="E";               
          OSMboxPost(Mbox2, Msg);
         }
        else Beep(1);
       }
       else if((Msg[0]=='W')&&(Msg[1]=='R')&&(Msg[2]=='I')&&(Msg[3]=='T')&&(Msg[4]=='E'))
       {
         for (i = 0; i < 10; i++)
         {
            I2cDataBuf[i + 1] = 0x11;
         }
          I2cDataBuf[0] = 0;                                                 /* 擴展地址 */
          I2cWrite(CSI24WC02, I2cDataBuf, 11);
       }
      }            
      CplPin(LED1);     
      OSTimeDlyHMSM(0, 0,1,0);
    }    
}

/*
*****************************************
* 該任務負責顯示
*****************************************
*/
void  Task2 (void *pdata)
{
  
    int i=0;
    for (;;)
     {                          
       if(i>=16)
        i=0;
        Display(i++);
       OSTimeDlyHMSM(0, 0,1,0);
     }        
}
/*
**************************************
* 負責接收命令,并處理命令
**************************************
*/
void  Task3 (void *pdata)
{
    #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
    OS_CPU_SR     cpu_sr;
    #endif   
    uint32  Cmd;
    char *Msg=NULL;
    pdata = pdata;                                                       
    
     for (;;)
     {      
       if(ComGetFrame(COM2)){  //等待上位機發來的命令
         OS_ENTER_CRITICAL();
         Cmd=4;
         Comm2Buf.RingBufRxBusy=0;
         if(Comm2Buf.RingBufRx[1]==0x01)Cmd=1;
         else if(Comm2Buf.RingBufRx[1]==0x02)Cmd=2;
         OS_EXIT_CRITICAL();         
         switch(Cmd)
         {
          case 1: //返回的數據正確
                  Beep(1); break;
          case 2: //告訴任務1讀E2CPROM
                  Msg="READ";
                  OSMboxPost(Mbox1, Msg);break;
          case 4: Msg="WRITE";
                  OSMboxPost(Mbox1, Msg);break;
          default :break;
         }
          
       }
       OSTimeDlyHMSM(0, 0,0,300);                                 
    }    
    
}
/*
*******************************************
* 負責向上位機返回數據
*******************************************
*/

void  Task4 (void *pdata)
{
     char *Msg=NULL;
     INT8U err;
     pdata = pdata;      
     for (;;)
     {       
       Msg = (char *)OSMboxPend(Mbox2, 0, &err); //等待消息!
       
       if(err == OS_NO_ERR){  // 收到消息
                              //處理消息
        if((Msg[0]=='D')&&(Msg[1]=='A')&&(Msg[2]=='T')&&(Msg[3]=='A'))
         { //發送卡的數據
         //  CommSendString(COM2,"\r\nWELCOME!");
           ComSendBuff(COM2,databuf,10);
        }
        else if(Msg[0]=='E')
        { //發送EEPROM的數據
         ComSendBuff(COM2,I2cDataBuf,10);
        }
      }                                      
    }       
}


/*
***************************************************
* Mifare卡操作:該任務每秒執行一次
***************************************************
*/
void Task5(void *pdata)
{
  uchar i;
  char *Msg=NULL;
  pdata = pdata;
  for(;;)
  {     
    if(mifs_request(IDLE,databuf)==MI_OK)   //there is card
    {       
      if(mifs_anticoll2(0,0,card_snr)==MI_OK){  //anticollision?         
                   
          if(mifs_select(card_snr,databuf)==MI_OK){  //select 
            //if(mifs_authentication2(KEYB,5,1)==MI_OK){     //autnentication    
          //密碼需要從EEPROM中讀取:
          
          for(i=0;i<6;i++)Nkey_b[i]=0xff;     
          if(mifs_authKey(KEYA,5,Nkey_b)==0){    
         
          if(mifs_read(22,databuf)==MI_OK) {   //read 
             if(databuf[0]==0x10){
               Msg="DATA";               
               OSMboxPost(Mbox2, Msg); //告訴任務4開始返回數據給上位機               
               Beep(1);       
             }
             mifs_halt();
             mifs_reset(1);
          }
        }        
       }
      }
     }    
     OSTimeDlyHMSM(0, 0, 1, 0);  
  }
}
                       

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女一区二区三区| 欧美国产精品专区| 91精品福利视频| 成人精品鲁一区一区二区| 国产在线视频一区二区| 另类小说色综合网站| 久88久久88久久久| 国产精品99久久久久久似苏梦涵| 狠狠网亚洲精品| 成人毛片老司机大片| 91在线视频官网| 7777女厕盗摄久久久| 精品国产乱码久久久久久蜜臀| 欧美va亚洲va国产综合| 久久精品男人的天堂| 专区另类欧美日韩| 亚洲成人三级小说| 精品在线一区二区三区| 福利一区福利二区| 在线观看网站黄不卡| 欧美一级一区二区| 国产精品理论片在线观看| 亚洲国产一区二区视频| 激情五月激情综合网| 色综合色狠狠天天综合色| 欧美人动与zoxxxx乱| 久久久三级国产网站| 亚洲国产综合色| 国产精品亚洲一区二区三区在线| 色诱视频网站一区| 日韩视频一区在线观看| 国产精品欧美久久久久无广告 | 一区二区三国产精华液| 秋霞电影一区二区| 97久久超碰精品国产| 777午夜精品视频在线播放| 欧美—级在线免费片| 日韩精品高清不卡| 成人自拍视频在线| 4438亚洲最大| 自拍偷拍亚洲欧美日韩| 激情综合色综合久久| 欧美午夜电影网| 中文字幕 久热精品 视频在线| 午夜av一区二区三区| 91在线视频观看| 国产日韩欧美高清| 蜜桃精品视频在线| 欧美另类videos死尸| 国产精品国产三级国产aⅴ中文| 日本伊人色综合网| 欧美色图免费看| 亚洲精品日日夜夜| 成人精品视频一区二区三区| 精品久久久久久久久久久久久久久| 亚洲综合一二三区| 91看片淫黄大片一级在线观看| 久久久影院官网| 国精产品一区一区三区mba桃花| 欧美日韩极品在线观看一区| 亚洲视频一二区| 国产成人啪免费观看软件| 日韩免费观看高清完整版在线观看| 亚洲一卡二卡三卡四卡五卡| 色诱亚洲精品久久久久久| 亚洲丝袜精品丝袜在线| 成人性视频免费网站| 久久精品这里都是精品| 国产伦理精品不卡| 国产日韩精品一区二区三区| 国产精品自在在线| 欧美xxxxx牲另类人与| 日日欢夜夜爽一区| 欧美刺激午夜性久久久久久久| 肉肉av福利一精品导航| 欧美一区二区三区精品| 麻豆精品国产传媒mv男同| 日韩一区二区在线免费观看| 黑人巨大精品欧美一区| 久久综合九色综合97婷婷| 国产麻豆精品视频| 欧美国产乱子伦| 色狠狠色噜噜噜综合网| 亚洲一二三级电影| 日韩女优毛片在线| 国产精品69久久久久水密桃| 久久―日本道色综合久久| 床上的激情91.| 亚洲欧美日本在线| 欧美日韩精品二区第二页| 另类专区欧美蜜桃臀第一页| 欧美国产日产图区| 欧美日韩一区二区在线观看视频| 日日夜夜免费精品| 久久久高清一区二区三区| 99国产精品国产精品久久| 亚洲综合视频在线观看| 日韩色视频在线观看| 国产毛片一区二区| 亚洲精品伦理在线| 欧美videofree性高清杂交| 成人激情电影免费在线观看| 亚洲人成精品久久久久| 欧美一区二区视频在线观看2020| 国产一区二区0| 亚洲一区二区三区在线| 精品欧美乱码久久久久久 | 一区二区三区在线免费观看| 欧美日韩精品欧美日韩精品| 韩国精品免费视频| 亚洲一区二区欧美| 日本一区二区不卡视频| 欧美精品v国产精品v日韩精品| 国产一区二区网址| 亚洲成a人v欧美综合天堂| 国产欧美日韩综合精品一区二区 | 日韩高清在线电影| 国产精品第13页| 亚洲精品一线二线三线无人区| 色噜噜久久综合| 成人午夜看片网址| 免费久久精品视频| 亚洲一区二区三区国产| 国产精品久线观看视频| 欧美精品一区二区三区四区| 欧美日韩和欧美的一区二区| 成人性生交大片免费看在线播放| 免费欧美在线视频| 亚洲第一搞黄网站| 亚洲精品视频免费看| 国产精品久久毛片av大全日韩| 欧美一级片免费看| 欧美日韩亚州综合| 在线免费一区三区| 99r国产精品| 岛国av在线一区| 国内精品嫩模私拍在线| 蜜桃视频免费观看一区| 日韩中文欧美在线| 午夜成人在线视频| 亚洲福中文字幕伊人影院| 一区二区三区日韩欧美| 亚洲乱码中文字幕| 亚洲综合一区在线| 亚洲一区二区三区四区五区黄| 综合自拍亚洲综合图不卡区| 国产欧美精品一区二区三区四区 | 亚洲一区中文在线| 亚洲电影你懂得| 无吗不卡中文字幕| 日韩电影一区二区三区| 日本欧美在线观看| 久久99九九99精品| 国产成a人亚洲| 成人激情校园春色| 成人av在线电影| 色婷婷国产精品综合在线观看| 色综合中文综合网| 91精品国产高清一区二区三区| 欧美高清视频不卡网| 欧美男男青年gay1069videost| 色婷婷久久久亚洲一区二区三区| 在线免费一区三区| 欧美精品一卡两卡| 精品奇米国产一区二区三区| www日韩大片| 亚洲少妇30p| 午夜欧美一区二区三区在线播放| 日韩一区精品字幕| 韩国一区二区视频| 国产成人av电影在线观看| av在线播放成人| 精品视频1区2区| 欧美变态凌虐bdsm| 亚洲日本va午夜在线影院| 午夜精品福利一区二区蜜股av| 激情欧美一区二区三区在线观看| 国产999精品久久久久久| 91麻豆自制传媒国产之光| 欧美日韩精品三区| 国产亚洲一区二区三区四区| **欧美大码日韩| 日韩电影在线观看电影| 成人少妇影院yyyy| 欧美精品黑人性xxxx| 国产欧美日韩另类视频免费观看| 亚洲精品欧美激情| 韩国一区二区在线观看| 在线中文字幕一区二区| 久久综合色婷婷| 香蕉影视欧美成人| 成人美女视频在线看| 欧美一区二区啪啪| 日韩久久一区二区| 亚洲欧洲av色图| 国产一区二区日韩精品| 欧美日本乱大交xxxxx| 亚洲天堂av一区| 国产一区999| 91精品国产91热久久久做人人|