标题:
自己构建OS基本工程-基于Cortex-M内核的源程序
[打印本页]
作者:
Angle145
时间:
2019-5-17 00:29
标题:
自己构建OS基本工程-基于Cortex-M内核的源程序
搭建任务控制块和任务调度器函数可完成自己的OS,最精简的框架,C文件只有217行代码,有完整详细注释。
0.png
(3.9 KB, 下载次数: 62)
下载附件
2019-5-17 04:49 上传
单片机源程序如下:
#include "os.h" //使用内核
#include "usart.h"
/****************************用户任务函数声明*****************************/
void Task1(void);
void Task2(void);
void Task3(void);
/*******************************************************************/
/*****************************用户任务堆栈创建**************************/
//任务堆栈(一维数组)全局变量
OS_STK Task1Stk[128];
OS_STK Task2Stk[64];
OS_STK Task3Stk[64];
/*******************************************************************/
/******************************用户任务加入内核运行*********************************/
int main(void)
{
USART1_Config(9600); //串口1初使化
printf("-@OS Inside\r\n");
OSInit();
OSTaskCreate(Task1,&Task1Stk[128-1]); //创建任务1 //必须-1,数组标号最大为N-1
OSTaskCreate(Task2,&Task2Stk[64-1]); //创建任务2
OSTaskCreate(Task3,&Task3Stk[64-1]); //创建任务3
OSStartUp();
}
/***********************************************************************************/
void Task1(void) //任务1
{
while(1)
{
OSprintf("Task1 is running\r\n");
OS_delayMs(1000);
}
}
void Task2(void) //任务2
{
while(1)
{
OSprintf("Task2 is running\r\n");
OS_delayMs(2000);
}
}
void Task3(void) //任务3
{
while(1)
{
OSprintf("Task3 is running\r\n");
OS_delayMs(4000);
}
}
/*
*望穿秋水提示:
*想要更多任务的自己手动添加,添加任务时,任务堆栈、任务函数声明、任务创建参数名、任务函数名四者均要添加且名称要统一。
*把void Taskx(void)看成普通的int main(void)使用即可,while(1){}必须存在;
*任务名可以随意修改,Task1是默认的任务名,修改任务名时,任务堆栈、任务函数声明、任务创建参数名、任务函数名四者名称要统一。
*这里默认创建了3个用户任务,用户可自行添加或删除(最大255个任务(含空闲任务))
*/
复制代码
所有资料51hei提供下载:
动手写OS基本工程-基于Cortex-M内核.zip
(517.25 KB, 下载次数: 22)
2019-5-17 00:29 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1