📄 main.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 + -