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

📄 main.c

📁 周立功ARM9 2410试验平台的uCOS-II基础实验代码
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name:          main.c
** Last modified Date: 2006-01-11 
** Last Version:       v1.0
** Descriptions:       主程序
**
**------------------------------------------------------------------------------------------------------
** Modified by:       
** Modified date:      2006-01-06
** Version:            v1.0
** Descriptions:       创建
**
**------------------------------------------------------------------------------------------------------
** Modified by:      
** Modified date:     
** Version:           
** Descriptions:      
**
********************************************************************************************************/
#include "config.h"

#define	Task0StkLengh	128              // Define the Task0 stack length 定义用户任务0的堆栈长度
#define	Task1StkLengh	128              // Define the Task1 stack length 定义用户任务1的堆栈长度

OS_STK	Task0Stk [Task0StkLengh];       // Define the Task0 stack 定义用户任务0的堆栈
OS_STK	Task1Stk [Task1StkLengh];       // Define the Task1 stack 定义用户任务1的堆栈

OS_EVENT	*UART0_Sem;
OS_EVENT	*IrDA_Mbox;

char str[32];

void 	Task0(void *pdata);			    // Task0 任务0
void 	Task1(void *pdata);			    // Task1 任务1

/************************************************************************************
** Function name: main
** Descriptions:  主函数
** Input:         无 
** Output:        系统返回值0
** Created by:   
** Created Date:  2006-01-12
**----------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**----------------------------------------------------------------------------------
************************************************************************************/
int main (void)
{
	OSInit ();																							
	OSTaskCreate (Task0,(void *)0, &Task0Stk[Task0StkLengh - 1], 2);		
	OSTaskCreate (Task1,(void *)0, &Task1Stk[Task1StkLengh - 1], 3);
    UART0_Sem = OSSemCreate(1);
    IrDA_Mbox = OSMboxCreate((void *)0);
	OSStart ();
	return 0;															
}

/************************************************************************************
** Function name: Task0
** Descriptions:  发送字符串
************************************************************************************/
void Task0	(void *pdata)
{   uint8  i, sum, sum_rcv, num, data, flag;

	pdata = pdata;
	TargetInit ();
	
	while (1)
	{
	
START:
		i    = 0x00;						// 清空全部数据与变量
		sum  = 0x00;
		sum_rcv = 0x00;
		num  = 0x00;
		flag = 0x00;

		do									// 接收起始标志,接收超时则重新开始
		{
			data = 0x00;
			if(FALSE == IrDA_ReceiveByte(&data))
				goto START;
		}
		while(data != 0xf0);
		
		if(FALSE == IrDA_ReceiveByte(&num))	// 接收数据长度,接收超时则重新开始
			goto START;
			
		for(i=0; i<num; i++)				// 开始接收数据,接收超时则重新开始		
		{
			if(TRUE == IrDA_ReceiveByte(&data))
				str[i] = (char)data;
			else
				goto START;
		}
		if(FALSE == IrDA_ReceiveByte(&sum))	// 接收数据校验和,接收超时则重新开始
			goto START;

		for(i=0; i<num; i++)				// 检查校验和,接收超时则重新开始	
		{
			sum_rcv = sum_rcv + str[i];		
		}
		if(sum_rcv != sum_rcv)				// 校验和错误则重新开始
			goto START;

		if(FALSE == IrDA_ReceiveByte(&data))// 接收结束标志,接收超时则重新开始
			goto START;
		if(data != 0xf1)
			goto START;

		OSMboxPost(IrDA_Mbox, (void *)&str[0]);
	}
}

/************************************************************************************
** Function name: Task1
** Descriptions : 发送字符串给串口0
************************************************************************************/
void Task1	(void *pdata)
{   uint8 err, i;  
	char *pStr;
	pdata = pdata;
	
	while (1)
	{	
		pStr = OSMboxPend( IrDA_Mbox, 		// 等待邮箱传递的指针
		 			       OS_TICKS_PER_SEC*2,
		 			    	&err );
		UART_SendStr(pStr);
		
		for(i=0; i<32; i++)					// 发送完毕则清空数据缓存
		{
			str[i] = 0x00;		
		}
	}
}

⌨️ 快捷键说明

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