📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: wengshujie
** Created date: 2007-10-15
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
*********************************************************************************************************/
#include "main.h"
#define TASK0_ID 16 /* 任务0的ID */
#define TASK0_PRIO TASK0_ID /* 任务0的优先级 */
#define TASK0_STACK_SIZE 256 /* 定义任务0堆栈长度 */
#define TASK1_ID 17 /* 任务1的ID */
#define TASK1_PRIO TASK1_ID /* 任务1的优先级 */
#define TASK1_STACK_SIZE 512 /* 定义任务1堆栈长度 */
#define TASK2_ID 18 /* 任务2的ID */
#define TASK2_PRIO TASK2_ID /* 任务2的优先级 */
#define TASK2_STACK_SIZE 256 /* 定义任务2堆栈长度 */
#define TASK3_ID 19 /* 任务3的ID */
#define TASK3_PRIO TASK3_ID /* 任务3的优先级 */
#define TASK3_STACK_SIZE 256 /* 定义任务3堆栈长度 */
#define TASK4_ID 20 /* 任务4的ID */
#define TASK4_PRIO TASK4_ID /* 任务4的优先级 */
#define TASK4_STACK_SIZE 256 /* 定义任务4堆栈长度 */
OS_STK TASK0_STACK[TASK0_STACK_SIZE]; /* 建立任务0堆栈 */
OS_STK TASK1_STACK[TASK1_STACK_SIZE]; /* 建立任务1堆栈 */
OS_STK TASK2_STACK[TASK2_STACK_SIZE]; /* 建立任务2堆栈 */
OS_STK TASK3_STACK[TASK3_STACK_SIZE]; /* 建立任务3堆栈 */
OS_STK TASK4_STACK[TASK4_STACK_SIZE]; /* 建立任务4堆栈 */
void TASK0 (void *pdata); /* 声明任务0 */
void TASK1 (void *pdata); /* 声明任务1 */
void TASK2 (void *pdata); /* 声明任务2 */
void TASK3 (void *pdata); /* 声明任务3 */
void TASK4 (void *pdata); /* 声明任务4 */
/*********************************************************************************************************
** Function name: main
** Descriptions: 主函数
** Input: 无
** Output: 无
*********************************************************************************************************/
int main (void)
{
OSInit ();
OSTaskCreateExt (TASK0,
(void *)0,
&TASK0_STACK[TASK0_STACK_SIZE-1],
TASK0_PRIO,
TASK0_ID,
&TASK0_STACK[0],
TASK0_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSStart ();
}
/*********************************************************************************************************
** Function name: TASK0
** Descriptions: 最要是初始化4个串口及新建4个与串口相关联的任务
** Input: 无
** Output: 无
*********************************************************************************************************/
char cUartArg[] = "BaudRate=9600 DataBits=8 StopBits=1 Parity=0 RtsControl=0";
uint8 uiConnectOk[]="Connect Successful!";
void TASK0 (void *pdata)
{
pdata = pdata;
#if OS_CRITICAL_METHOD == 3 /* for CPU status register */
OS_CPU_SR cpu_sr;
#endif
TargetInit (); /* 目标板初始化 */
PINSEL0 |= ((0x01 << 4) | (0x01 << 6)); /* 设置P0.2和P0.3连接到UART0 */
PINSEL0 |= 0x01 << 30; /* 设置P0.15和P0.16连接到UART1 */
PINSEL1 |= 0x01 << 0;
PINSEL0 |= ((0x01 << 20) | (0x01 << 22)); /* 设置P0.10和P0.11连接到UART2 */
PINSEL0 |= ((0x02 << 0) | (0x02 << 1)); /* 设置P0.0和P0.1连接到UART3 */
uartInit (UART0, cUartArg, NULL); /* 初始化串口0 */
uartInit (UART1, cUartArg, NULL); /* 初始化串口1 */
uartInit (UART2, cUartArg, NULL); /* 初始化串口2 */
uartInit (UART3, cUartArg, NULL); /* 初始化串口3 */
SetVICIRQ (6, 5, (uint32)uart0Isr); /* 设置UART0中断 */
SetVICIRQ (7, 6, (uint32)uart1Isr); /* 设置UART1中断 */
SetVICIRQ (28, 7, (uint32)uart2Isr); /* 设置UART2中断 */
SetVICIRQ (29, 8, (uint32)uart3Isr); /* 设置UART3中断 */
uartWrite (UART0, uiConnectOk, sizeof(uiConnectOk), NULL); /* 提示UART0连接成功 */
uartWrite (UART1, uiConnectOk, sizeof(uiConnectOk), NULL); /* 提示UART1连接成功 */
uartWrite (UART2, uiConnectOk, sizeof(uiConnectOk), NULL); /* 提示UART2连接成功 */
uartWrite (UART3, uiConnectOk, sizeof(uiConnectOk), NULL); /* 提示UART3连接成功 */
OSTaskCreateExt (TASK1,
(void *)0,
&TASK1_STACK[TASK1_STACK_SIZE-1],
TASK1_PRIO,
TASK1_ID,
&TASK1_STACK[0],
TASK1_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt (TASK2,
(void *)0,
&TASK2_STACK[TASK2_STACK_SIZE-1],
TASK2_PRIO,
TASK2_ID,
&TASK2_STACK[0],
TASK2_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt (TASK3,
(void *)0,
&TASK3_STACK[TASK3_STACK_SIZE-1],
TASK3_PRIO,
TASK3_ID,
&TASK3_STACK[0],
TASK3_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt (TASK4,
(void *)0,
&TASK4_STACK[TASK4_STACK_SIZE-1],
TASK4_PRIO,
TASK4_ID,
&TASK4_STACK[0],
TASK4_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
while (1)
{
OSTimeDly(OS_TICKS_PER_SEC);
}
}
/*********************************************************************************************************
** Function name: TASK1
** Descriptions: UART0的任务
** Input: 无
** Output: 无
*********************************************************************************************************/
OS_EVENT *poeUart0ReviceSem; /* 定义信号量poeUart0ReviceSem */
uint8 uiReviceBuf0[128]; /* 接收数据缓冲区 */
void TASK1 (void *pdata)
{
INT8U iUart0Err;
uint32 uiNum;
pdata = pdata;
poeUart0ReviceSem = OSSemCreate(1); /* 创建信号量 */
while(1)
{
OSSemPend(poeUart0ReviceSem, 0, &iUart0Err); /* 请求信号量 */
uiNum = uartFifoStatus(UART0, RX_FIFO); /* 查看收到多少数据 */
uartRead(UART0, uiReviceBuf0, uiNum, NULL); /* 读数据 */
uartWrite(UART0, uiReviceBuf0, uiNum, NULL); /* 把读到的数据发回去 */
}
}
/*********************************************************************************************************
** Function name: TASK2
** Descriptions: UART1的任务
** Input: 无
** Output: 无
*********************************************************************************************************/
OS_EVENT *poeUart1ReviceSem;
uint8 uiReviceBuf1[128]; /* 接收数据缓冲区 */
void TASK2 (void *pdata)
{
INT8U iUart1Err;
uint32 uiNum;
pdata = pdata;
poeUart1ReviceSem = OSSemCreate(1); /* 创建信号量 */
while(1)
{
OSSemPend(poeUart1ReviceSem, 0, &iUart1Err); /* 请求信号量 */
uiNum = uartFifoStatus(UART1, RX_FIFO); /* 查看收到多少数据 */
uartRead(UART1, uiReviceBuf1, uiNum, NULL); /* 读数据 */
uartWrite(UART1, uiReviceBuf1, uiNum, NULL); /* 把读到的数据发回去 */
}
}
/*********************************************************************************************************
** Function name: TASK3
** Descriptions: UART2的任务
** Input: 无
** Output: 无
*********************************************************************************************************/
OS_EVENT *poeUart2ReviceSem;
uint8 uiReviceBuf2[128]; /* 接收数据缓冲区 */
void TASK3 (void *pdata)
{
INT8U iUart2Err;
uint32 uiNum;
pdata = pdata;
poeUart2ReviceSem = OSSemCreate(1); /* 创建信号量 */
while(1)
{
OSSemPend(poeUart2ReviceSem, 0, &iUart2Err); /* 请求信号量 */
uiNum = uartFifoStatus(UART2, RX_FIFO); /* 查看收到多少数据 */
uartRead(UART2, uiReviceBuf2, uiNum, NULL); /* 读数据 */
uartWrite(UART2, uiReviceBuf2, uiNum, NULL); /* 把读到的数据发回去 */
}
}
/*********************************************************************************************************
** Function name: TASK4
** Descriptions: UART3的任务
** Input: 无
** Output: 无
*********************************************************************************************************/
OS_EVENT *poeUart3ReviceSem;
uint8 uiReviceBuf3[128]; /* 接收数据缓冲区 */
void TASK4 (void *pdata)
{
INT8U iUart3Err;
uint32 uiNum;
pdata = pdata;
poeUart3ReviceSem = OSSemCreate(1); /* 创建信号量 */
while(1)
{
OSSemPend(poeUart3ReviceSem, 0, &iUart3Err); /* 请求信号量 */
uiNum = uartFifoStatus(UART3, RX_FIFO); /* 查看收到多少数据 */
uartRead (UART3, uiReviceBuf3, uiNum, NULL); /* 读数据 */
uartWrite (UART3, uiReviceBuf3, uiNum, NULL); /* 把读到的数据发回去 */
}
}
/*********************************************************************************************************
** End Of File
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -