当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] UC/OS II多任务切换例程#include “config.h”#define TaskStkLengh 64OS_STK TaskStk [TaskStkLengh];OS_STK TaskStk1 [TaskStkLengh];OS_STK TaskStk2 [TaskS

 UC/OS II多任务切换例程

#include “config.h”

#define TaskStkLengh 64

OS_STK TaskStk [TaskStkLengh];

OS_STK TaskStk1 [TaskStkLengh];

OS_STK TaskStk2 [TaskStkLengh];

OS_EVENT *TASK1;

OS_EVENT *TASK2;

OS_EVENT *TASK3;

void Task0(void *pdata); //Task0 ÈÎÎñ0

void Task1(void *pdata);

void Task2(void *pdata);

uint8 err;

void UART0_Ini(void)

{ uint16 Fdiv;

U0LCR = 0x83;

Fdiv = (Fpclk / 16) / UART_BPS;

U0DLM = Fdiv / 256;

U0DLL = Fdiv % 256;

U0LCR = 0x03;

}

void UART0_SendByte(uint8 data)

{ U0THR = data; // ·¢ËÍÊý¾Ý

while( (U0LSR&0x40)==0 ); // µÈ´ýÊý¾Ý

}

int main (void)

{

OSInit

();

OSTaskCreate (Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 0);

TASK1= OSSemCreate(0);

TASK2= OSSemCreate(0);

TASK3= OSSemCreate(0);

TargetInit();

OSStart ();

return 0;

}

/*******************************************************************************************

** Task0 ÈÎÎñ0

*******************************************************************************************/

void Task0 (void *pdata)

{

UART0_Ini();

OSTaskCreate(Task1, (void *)0, &TaskStk1[TaskStkLengh-1], 9);

OSTaskCreate(Task2, (void *)0, &TaskStk2[TaskStkLengh-1], 10);

OSSemPost(TASK1);

for (;;)

{

OSSemPend(TASK1,10,&err

if(err==OS_NO_ERR)

{

UART0_SendByte(0x01);

OSSemPost(TASK2);

}

}

}

/******************************************************************************************* Task1 ÈÎÎñ1

*******************************************************************************************/

void Task1 (void *pdata)

{

UART0_Ini();

for (;;)

{

OSSemPend(TASK2,10,&err);

if(err==OS_NO_ERR)

{

UART0_SendByte(0x02);

OSSemPost(TASK3);

}

}

}

void Task2 (void *pdata)

{

UART0_Ini();

for (;;)

{

OSSemPend(TASK3,10,&err);//»&

if(err==OS_NO_ERR)

{

UART0_SendByte(0x03);

OSSemPost(TASK1);

}

}

}

三个任务分别通过UART0输出0X01,0X02,0X03,可以学习理解信号量的基本用法及多任务的调度方法.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

深圳2023年9月15日 /美通社/ -- 9月14-15日,2023全球AI芯片峰会(GACS 2023)在深圳正式举行。峰会以【AI 大时代 逐鹿芯世界】为主题,共探AI芯片的产学研用,邀请了清华大学教授、中国半导体...

关键字: 接口 芯科 内存 AC

SanerNow Risk Prioritization依托CISA的SSVC框架,以SecPod著名的漏洞情报为基础而创建,可有效地对漏洞、错误配置和其他安全风险进行优先级排序,并改善网络安全态势。 加利福尼亚州雷德...

关键字: 安全漏洞 SE RIO BSP

(全球TMT2023年9月12日讯)Microland Limited与Serco AsPac宣布建立战略合作伙伴关系,以推动数字化转型,利用云提高业务敏捷性和韧性。Serco AsPac是全球最大的公共服务提供商之一...

关键字: LAN MICRO SE RC

此次合作将专注于提供卓越的数字公共服务、促进业务增长、打造增强的数字体验并加速云采用。 印度班加罗尔2023年9月12日 /美通社/ -- 今日,Microland Lim...

关键字: LAN MICRO 数字化 SE

(全球TMT2023年9月7日讯)思享无限控股有限公司宣布,将以300万美元投资DVCC TECHNOLOGY L.L.C(DVCC),以获取其30%股权。这一重要举措标志着思享无限从移动娱乐向元宇宙生活方式的转变,也...

关键字: DVCC SE RS AI

北京2023年9月6日 /美通社/ -- 思享无限控股有限公司(以下简称:思享无限,纳斯达克股票代码:SJ)对外宣布,将以300万美元投资DVCC TECHNOLOGY L.L.C(以下简称DVCC),以获取其30%股权...

关键字: DVCC TECHNOLOGY SE RS

成都2023年9月5日 /美通社/ -- 2023年9月5日,ACCA市场关系执行总监卢曦(Lucia)、ACCA中国总监梁淑萍一行到访成都,就推动财金大学生职业发展议题与实习僧展开交流。双方正式签署"ACCA...

关键字: AC 创始人 AI LEARNING

(全球TMT2023年9月4日讯)当地时间9月1日,荣耀终端有限公司CEO赵明在2023德国柏林消费电子展(Internationale Funkausstellung Berlin,IFA)开幕日发表题为《展开未来(...

关键字: 荣耀 折叠屏手机 SE RS

柏林2023年9月4日 /美通社/ -- 当地时间9月1日,荣耀终端有限公司CEO赵明在2023德国柏林消费电子展(Internationale Funkausstellung Berlin,以下简称IFA)开幕日发表题...

关键字: 荣耀 折叠屏 SE RS

上海2023年9月4日 /美通社/ -- 2023年8月25日,由杜塞尔多夫展览(上海)有限公司主办且首次引入中国市场的2023康复设备与解决方案展览会(REHACARE CHINA)在苏州国际博览中心圆满落下帷幕。...

关键字: CHINA AC INTERNATIONAL BSP
关闭
关闭