📄 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: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: Chenxibing
** Modified date: 2005-03-11
** Version:
** Descriptions: 信号量使用
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"
#define TaskStkLengh 64 // 定义用户任务0的堆栈长度
OS_STK TaskStk [TaskStkLengh]; // 定义用户任务0的堆栈
OS_STK Task1Stk [TaskStkLengh]; // 定义Task1的堆栈
void Task0(void *pdata); // Task0 任务0
void Task1(void *pdata); // Task1 任务1
OS_EVENT *DispSem;
/*
*********************************************************************************************************
** 函数名称 :UART0_SendByte()
** 函数功能 :向串口发送字节数据,并等待发送完毕,查询方式。
** 入口参数 :dat 要发送的数据
** 出口参数 :无
*********************************************************************************************************
*/
void UART0_SendByte (uint8 dat)
{
U0THR = dat;
while ((U0LSR & 0x40) == 0); // 等待数据发送完毕
}
/*
*********************************************************************************************************
** 函数名称 :UART0_SendStr()
** 函数功能 :向串口发送一字符串
** 入口参数 :str 要发送的字符串的指针
** 出口参数 :无
*********************************************************************************************************
*/
void UART0_SendStr (uint8 const *str)
{
while (1)
{
if (*str == '\0') break; // 遇到结束符,退出
UART0_SendByte(*str++); // 发送数据
}
}
/*
**********************************************************************************************************
** 函数名称 :main()
** 函数功能 :uC/OS-II主函数,启动多任务环境。
**********************************************************************************************************
*/
int main (void)
{
OSInit ();
DispSem = OSSemCreate(1) ;
OSTaskCreate (Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 2);
OSStart ();
return 0;
}
/*********************************************************************************************************
** Task0 任务0
** 目标板初始化,创建Task1,向串口0发送字符串“I AM TASK A.”
********************************************************************************************************/
void Task0 (void *pdata)
{
uint8 err;
uint8 str0[]="I AM TASK A.";
pdata = pdata;
TargetInit ();
OSTaskCreate (Task1,(void *)0, &Task1Stk[TaskStkLengh - 1], 3);
while (1)
{
OSSemPend(DispSem, 0, & err); // 等待信号量
UART0_SendStr(str0);
OSTimeDly(1);
err = OSSemPost(DispSem); // 发送信号量
}
}
/*********************************************************************************************************
** Task1 任务1
** 向串口0发送字符串“i am task b.”
********************************************************************************************************/
void Task1 (void *pdata)
{
uint8 err;
uint8 str1[]="i am task b.";
pdata = pdata;
while (1)
{
OSSemPend(DispSem, 0, & err); // 等待信号量
UART0_SendStr(str1);
err = OSSemPost(DispSem); // 发送信号量
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -