历史上的今天
返回首页

历史上的今天

今天是: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; 

}

 

推荐阅读

史海拾趣

Bellnix Co Ltd公司的发展小趣事

随着国内市场的逐渐饱和,Bellnix开始将目光投向海外市场。公司制定了国际化战略,通过设立海外分公司、建立销售网络等方式,积极拓展海外市场。同时,Bellnix还加强与国际同行的交流与合作,引进先进的技术和管理经验,提升公司的国际化水平。这些举措使Bellnix在国际市场上取得了显著成绩,为公司的发展注入了新的动力。

DEVCON公司的发展小趣事

随着DEVCON品牌知名度的提升和产品线的不断丰富,公司开始将目光投向更广阔的市场。通过与国际知名企业的合作和代理,DEVCON的产品逐渐进入全球电子制造和维修领域。同时,公司还积极开拓新兴市场,如汽车电子、安防监控等领域,进一步扩大了市场份额。这种市场扩张的策略不仅带来了丰厚的回报,也为DEVCON公司的长期发展奠定了坚实基础。

Chipcon AS公司的发展小趣事

面对日益激烈的市场竞争,Chipcon AS公司积极寻求与其他企业的技术合作。通过与一家知名的半导体公司建立战略合作关系,双方共同研发了一款具有划时代意义的智能传感器芯片。这款芯片不仅集成了多种传感器功能,还具备高度集成和智能化的特点,为物联网领域的发展提供了有力支持。通过技术合作,Chipcon AS公司不仅提升了自身的技术实力,还拓展了市场份额。

Bivar公司的发展小趣事

在数字化转型的大趋势下,Bivar公司也积极拥抱新技术,推动公司的数字化转型。公司引入了先进的生产管理系统和数据分析工具,实现了生产过程的智能化和精细化管理。同时,公司还加强了线上销售和客户服务渠道的建设,提升了客户体验和满意度。这些数字化转型的举措使得Bivar公司在激烈的市场竞争中保持了领先地位。

请注意,以上故事都是基于虚构和假设的,并不代表Bivar公司的真实发展历程。如果您需要了解Bivar公司的真实情况,建议您查阅该公司的官方网站、新闻报道或行业分析报告等权威渠道。

CIF公司的发展小趣事

B公司原本是一家地区性的电子产品供应商,为了拓展国际市场,决定采用CIF交易模式。通过与国外客户的深入沟通和合作,B公司成功打开了多个海外市场。同时,B公司还积极参与国际电子产品展会,提升品牌知名度,进一步巩固了其在全球市场的地位。

EMLSI公司的发展小趣事

人才是企业发展的根本动力。EMLSI公司深知这一点,因此始终将人才战略作为企业发展的重要支撑。公司建立了完善的人才培养体系,为员工提供广阔的发展空间和良好的职业前景。同时,EMLSI还注重引进外部优秀人才,为企业注入新的活力和创新力。这种对人才的重视和投入让EMLSI在激烈的市场竞争中始终保持领先地位。

问答坊 | AI 解惑

超强优惠价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 ...…

查看全部问答>

飞思卡尔MC9S08DZ60中文参考手册

这是飞思卡尔公司HCS08系列8位MCU中的一款MC9S08DZ60的中文手册,飞思卡尔网站上有英文的手册,考虑到国内不少人还是习惯看中文的,把这篇中文的转过来,呵呵特别说明下: 虽然这是DZ60这一款MCU的中文手册,但由于飞思卡尔公司整个HCS08系列都是 ...…

查看全部问答>

【监控系统如何考虑防雷】

【监控系统如何考虑防雷】     笔者的观点是: 1) 全面防雷不是安防工程应该考虑的问题。有些防雷的文章,让安防工程全面考虑接闪,防静电和防雷电电磁感应问题,弄得安防弱电工程商头都大了,无所适从,只好把防雷任务交给“防雷专业 ...…

查看全部问答>

0

攒分赚人品谢谢清洁工和大兔子…

查看全部问答>

根升余弦滤波器的设计

各位大侠:敝人在为设计“根升余弦滤波器”而抓耳挠腮!请问哪位高手可否指点一二。 另外,FIR,IIR滤波器,想必行内人士都知道,但要用verilog实现,可有人搞过?商讨一下!…

查看全部问答>

WINCE EVC 中串口通信的问题 附源码

我使用WINCE5.0和EVC4   在处理一段串口通讯的代码 代码是我按照书上写的写的 但出现了一些问题:先附代码如下(内容过长,分开发) 串口通信类文件 CESeries.h文件 // CESeries.h: interface for the CCESeries class. // /////// ...…

查看全部问答>

点亮应急灯LED

刚点亮LED,本想上图但我用的是奔迈600手机,我想明天或者后天再上图,因为手机数据线在单位   这次做遇到最大的困难是我申请封装同我打开的不一样,我记得申通时是SOIC的就是一般的那种,可是一打开MAXIM邮件才发现是非常小的那种,这始我 ...…

查看全部问答>

三极管选择

本帖最后由 dontium 于 2015-1-23 13:31 编辑 我们在做光源跟踪器,但是光电三极管不知如何选择 …

查看全部问答>

理解数据采样系统

本帖最后由 天明 于 2014-7-30 15:15 编辑 ADI公司推出三集系列在线研讨会来关注模拟电气信号到数字信号的转换,以便通过DSP、微控制器或其它嵌入式处理器来分析和处理,本研讨会是第一集。但在使用数据转换器之前,我们需要先了解数据采样系统的 ...…

查看全部问答>