历史上的今天
今天是:2025年04月25日(星期五)
2019年04月25日 | UCOSIII系统初始化和启动
2019-04-25 来源:eefocus
1、 UCOSIII系统初始化
在使用UCOSIII之前我们必须先初始化UCOSIII,即函数OSInit()就是用来完成UCOSIII的初始化,而且OSInit()必须先于其他UCOSIII函数调用,包括OSStart()。
int main(void)
{
OS_ERR err;
CPU_SR_ALLOC();
/*外设初始化函数*/
delay_init(168); //时钟初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断分组配置
uart_init(115200); //串口初始化
LED_Init(); //LED初始化
OSInit(&err); //初始化UCOSIII
OS_CRITICAL_ENTER(); //进入临界区
/*初始化创建任务函数*/
//创建开始任务
OSTaskCreate((OS_TCB * )&StartTaskTCB, //任务控制块
(CPU_CHAR * )"start task", //任务名字
(OS_TASK_PTR )start_task, //任务函数
(void * )0, //传递给任务函数的参数
(OS_PRIO )START_TASK_PRIO, //任务优先级
(CPU_STK * )&START_TASK_STK[0], //任务堆栈基地址
(CPU_STK_SIZE)START_STK_SIZE/10, //任务堆栈深度限位
(CPU_STK_SIZE)START_STK_SIZE, //任务堆栈大小
(OS_MSG_QTY )0, //任务内部消息队列能够接收的最大消息数
//目,为0时禁止接收消息
(OS_TICK )0, //当使能时间片轮转时的时间
//片长度,为0时为默认长度,
(void * )0, //用户补充的存储区
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
//任务选项
(OS_ERR * )&err); //存放该函数错误时的返回值
OS_CRITICAL_EXIT(); //退出临界区
OSStart(&err); //开启UCOSIII
while(1);
}
从代码中我们可以看出,首先是OSInit()初始化UCOSIII,然后在main()函数中只创建一个start_task()任务,其他任务都在start_task任务中创建,再调用OSTaskCreate()函数创建任务时一定要调用OS_CRITICAL_ENTER()进入临界区,创建完成后调用OS_CRITICAL_EXIT()退出临界区,最后调用OSStart()开启UCOSIII。
注意:
OSStart()函数如下:
void OSStart (OS_ERR *p_err)
{
if (OSRunning == OS_STATE_OS_STOPPED)
{
OSPrioHighRdy = OS_PrioGetHighest();
OSPrioCur = OSPrioHighRdy;
OSTCBHighRdyPtr = OSRdyList[OSPrioHighRdy].HeadPtr;
OSTCBCurPtr = OSTCBHighRdyPtr;
OSRunning = OS_STATE_OS_RUNNING;
OSStartHighRdy();
*p_err = OS_ERR_FATAL_RETURN;
}
else
*p_err = OS_ERR_OS_RUNNING;
}
上一篇:UCOIII中任务的调度和切换
史海拾趣
|
超强优惠价Altera USB Blaster下载线198元热卖中 超强优惠价Altera USB Blaster下载线198元热卖中超强优惠价Altera USB Blaster下载线198元热卖中 支持的Altera FPGA/CPLD器件: Stratix II、Stratix II GX、Stratix GX及Stratix系列 Cyclone II及Cyclone ...… 查看全部问答> |
|
这是飞思卡尔公司HCS08系列8位MCU中的一款MC9S08DZ60的中文手册,飞思卡尔网站上有英文的手册,考虑到国内不少人还是习惯看中文的,把这篇中文的转过来,呵呵特别说明下: 虽然这是DZ60这一款MCU的中文手册,但由于飞思卡尔公司整个HCS08系列都是 ...… 查看全部问答> |
|
【监控系统如何考虑防雷】 笔者的观点是: 1) 全面防雷不是安防工程应该考虑的问题。有些防雷的文章,让安防工程全面考虑接闪,防静电和防雷电电磁感应问题,弄得安防弱电工程商头都大了,无所适从,只好把防雷任务交给“防雷专业 ...… 查看全部问答> |
|
各位大侠:敝人在为设计“根升余弦滤波器”而抓耳挠腮!请问哪位高手可否指点一二。 另外,FIR,IIR滤波器,想必行内人士都知道,但要用verilog实现,可有人搞过?商讨一下!… 查看全部问答> |
|
我使用WINCE5.0和EVC4 在处理一段串口通讯的代码 代码是我按照书上写的写的 但出现了一些问题:先附代码如下(内容过长,分开发) 串口通信类文件 CESeries.h文件 // CESeries.h: interface for the CCESeries class. // /////// ...… 查看全部问答> |




