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

📄 main.c

📁 使用串口中间件实现了串口的中断收发程序
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2008-12-24
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Deedcao
** Created date:		2008-12-24
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"
uint8 len;
uint8 rcv_buf[256];
uint8 rcv_new;

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

OS_EVENT *Uart0ReviceMbox;

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


/*********************************************************************************************************
** 函数名称: PC_DispChar
** 功能描述: 向串口发送一帧数据(按EasyARM软件通讯协议),起始字符固定为0xFF。
** 输 入: cp       发送数据的指针
** 输 出: 无
********************************************************************************************************/
        void PC_DispChar(uint8 *cp)
{
    OS_ENTER_CRITICAL();
    
    UART0Write(cp,len);
    OS_EXIT_CRITICAL();
}


/*********************************************************************************************************
** 函数名称: main
** 功能描述: c语言的主函数,由它启动多任务环境
********************************************************************************************************/
        int main (void)
{
    OSInit();

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

/*********************************************************************************************************
** 函数名称: TaskStart
** 功能描述: μCOS-II的第一个任务。等待TaskUart0Revice接收一到帧数据,
**           然后将数据进行转换,再从UART0发出。
** 输 入: pdata        任务附加参数(指针)
** 输 出: 无
********************************************************************************************************/

        void  TaskStart(void *pdata)
{
    uint8 *cp;
    uint8 err;

    pdata = pdata;                                                  /* 避免编译警告 */

    Uart0ReviceMbox = OSMboxCreate(NULL);                           /* 建立邮箱     */
    if (Uart0ReviceMbox == NULL)
    {
        while (1);
    }

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

    TargetInit();                                                   /* 目标板初始化 */
    for (;;)
    {
       cp = (uint8 *)OSMboxPend(Uart0ReviceMbox, 0, &err);         /* 接收数据 */
       
       PC_DispChar(cp); 
       OSTimeDly(1);                                           /* 显示接收到的数据 */
    }
}

/*********************************************************************************************************
** 函数名称: TaskUart0Revice
** 功能描述: μCOS-II的任务。从UART0接收数据,当接收完一帧数据后通过消
**           息邮箱传送到TaskStart任务。
** 输 入: pdata        任务附加参数(指针)
** 输 出: 无
********************************************************************************************************/
        void  TaskUart0Revice(void *pdata)
{
    uint8 *cp;
    
    len=0;
    
    pdata = pdata;                                                  /* 避免编译警告 */

    for (;;)
    {
		
        cp = rcv_buf;
      while((U0LSR&0x01)!=0)                            /* 接收数据头 */ 
      	
       
        {	rcv_new=1;
            rcv_buf[len] = UART0Getch();
           
            len++;
        }
        
       if(rcv_new==1)
       {
       OSMboxPost(Uart0ReviceMbox, (void *)rcv_buf);
       rcv_new=0;
       }
       else
       break;
        
    }
}
   
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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