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

📄 test.c

📁 利用easyARM2200的UART口接收从PC机过来的客流发生数据
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        产品一部 
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: test.c
**创   建   人: 陈明计
**最后修改日期: 2003年7月2日
**描        述: 数据队列使用例子
**              
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈明计
** 版  本: v1.0
** 日 期: 2003年7月2日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#include "config.h"

#define  TASK_STK_SIZE                  512
OS_STK        TaskStk[TASK_STK_SIZE];
OS_STK        TaskStartStk[TASK_STK_SIZE];




void  TaskStart(void *data);
void  TaskUart0Revice(void *pdata);


//OS_EVENT *ReMsgQeue;             /*定义消息队列指针*/
//void *MsgQeueTb[2];              /*定义消息指针数组,队列长度为2*/

//OS_MEM *PartitionPt;             /*定义内存分区指针*/
//uint8 Partition[2][8];           /*定义内存分区尺寸:每块8字节,共2块*/

uint8 Buf[19];
uint8 w,m;
// struct PassMode
// {
  // uint8 passid[4];
  // uint8 qiceng[2];
  // uint8 age;
  // uint8 daoceng[2];
// uint8 sex;
  // uint8 time[4];
  // uint8 weight[3];
   
   
   
   
   
// } Pass[10];
 
 
  struct PassMode
 {
   uint16 passid;
   uint8 qiceng;
   uint8 age;
   uint8 daoceng;
// uint8 sex;
   uint16 time;
   uint8 weight;
   
   
   
   
   
 } Pass[2500];
//static uint8 mm; 
/*********************************************************************************************************
** 函数名称: PC_DispChar
** 功能描述: μCOS-II的第一个任务,通常由它初始化目标板和建立其它任务
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 
**
** 作 者: 陈明计
** 日 期: 2003年7月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
//        void PC_DispChar(uint8 *cp)
//{
//    OS_ENTER_CRITICAL();
    
//    
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
                    
//    OS_EXIT_CRITICAL();
//}


/*********************************************************************************************************
** 函数名称: main
** 功能描述: c语言的主函数,由它启动多任务环境
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: PC_DispClrScr,OSInit,OSTaskCreate,OSStart
**
** 作 者: 陈明计
** 日 期: 2003年7月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        int main (void)
{
    OSInit();

    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 3);
    OSStart();
    return 0;
    
}

/*********************************************************************************************************
** 函数名称: TaskStart
** 功能描述: μCOS-II的第一个任务,通常由它初始化目标板和建立其它任务
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 
**
** 作 者: 陈明计
** 日 期: 2003年7月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

        void  TaskStart(void *pdata)
{
    
    
    
    //uint8 err,*cp,*pt0;
   
    pdata = pdata;  /* 避免编译警告 */
    
   
                                                    

    
    OSTaskCreate(TaskUart0Revice, (void *)0, 
                 &TaskStk[TASK_STK_SIZE - 1], 10);                  /* 创建任务     */

    TargetInit();                                                   /* 目标板初始化 */
    for (;;)
    {
    
     OSTaskSuspend(3);
//    cp=(uint8 *)OSQPend(ReMsgQeue,0,&err);
//    pt0=cp;
        
        
        
        
        //cp=Buf;
      // PC_DispChar(cp);
     // OS_ENTER_CRITICAL();
    
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
//   UART0Putch(*cp++);
                    
 //   OS_EXIT_CRITICAL();
 //  OSTimeDly(1);
    //OSTimeDly(OS_TICKS_PER_SEC/16);
        //cp++;
                                                /* 显示接收到的数据 */
   
   //OSMemPut(PartitionPt,pt0);  
  } 
}

/*********************************************************************************************************
** 函数名称: TaskUart0Revice
** 功能描述: μCOS-II的任务
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 
**
** 作 者: 陈明计
** 日 期: 2003年7月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void  TaskUart0Revice(void *pdata)
{
    
    uint8 temp,i,k;
    uint16 j;
    uint8 err;
    uint16 p,t;
    uint8 q,d,n;
//    uint8 *cp,*pt0;
    pdata = pdata;                                                  /* 避免编译警告 */
   
//ReMsgQeue=OSQCreate(&MsgQeueTb[0],2);
//PartitionPt=OSMemCreate(Partition,2,8,&err);
    
    
// cp=OSMemGet(PartitionPt,&err);
 //pt0=cp;
    
    
    for (;;)
    {
     for(j=0;j<2500;j++)
     {
       //err:
        //cp = Buf;
        for(k=0; k<2; k++)
        {  
           while (UART0Getch() != 0xff);                               /* 接收数据头 */    
           for (i = 0; i < 9; i++)
           {
            
               temp = UART0Getch();
               Buf[i+k*9]=temp;
           }
        }
      
       // OSMboxPost(Uart0ReviceMbox, (void *)Buf);
     //  OSQPost(ReMsgQeue,(void *)pt0);  //将得到数据的存放地址放入到消息队列中
    //w=(int)(Buf[0]-48);
    // m=(int)(Buf[0]-48)*5;
 
         p=(int)(Buf[0]-48)*1000+(int)(Buf[1]-48)*100+(int)(Buf[2]-48)*10+(int)(Buf[3]-48);
	     q=(int)(Buf[4]-48)*10+(int)(Buf[5]-48);
	     d=(int)(Buf[9]-48)*10+(int)(Buf[10]-48);
	     t=(int)(Buf[11]-48)*1000+(int)(Buf[12]-48)*100+(int)(Buf[13]-48)*10+(int)(Buf[14]-48);
	     n=(int)(Buf[15]-48)*100+(int)(Buf[16]-48)*10+(int)(Buf[17]-48);
	     
	     Pass[j].passid=p;
	     Pass[j].qiceng=q;
	     Pass[j].daoceng=d;
	     Pass[j].time=t;
	     Pass[j].weight=n;
	      w=Buf[7];
          m=Buf[8];
    
        // Pass[j].passid[0]=Buf[0];
        // Pass[j].passid[1]=Buf[1];
        // Pass[j].passid[2]=Buf[2];
        // Pass[j].passid[3]=Buf[3];
    
        // Pass[j].qiceng[0]=Buf[4];
        // Pass[j].qiceng[1]=Buf[5];
    
         Pass[j].age=(int)(Buf[6]-48);
    
        // Pass[j].daoceng[0]=Buf[9];
        // Pass[j].daoceng[1]=Buf[10];
    
//    Pass[j].sex=Buf[9];
       
       // Pass[j].time[0]=Buf[11];
       // Pass[j].time[1]=Buf[12];
       // Pass[j].time[2]=Buf[13];
       // Pass[j].time[3]=Buf[14];

       // Pass[j].weight[0]=Buf[15];
       // Pass[j].weight[1]=Buf[16];
       // Pass[j].weight[2]=Buf[17];
    
       }
     
    
    
    
   }
  
  
}


/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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