讲师博文
关于使用stm32cubemx生成代码后移植Ucos—III的方法 来源 : 华清远见     2018-10-28

介绍一下Ucos—iii的优点:相比于Ucos—ii,UCOS-II主要针对8位、16位机以及低端32位机,UCOS-III主要针对高端32位处理器和64位处理器,在性能上有了很大的提升,有了不少的提升,例如任务数没有显示,不同的任务可以拥有相同的优先级,相同优先级的任务调度采用时间片轮转法。对一些内核对象,例如信号量,可以在运行过程中创建和删除,不用像ucos-ii那样必须在编译时分配好。内核对象数也没有限制。

Ps:不过如果芯片处理能力有限的话,建议还是量力而为,选择ucos—ii足够就没必要选择ucos—iii,ucos-iii显然适用于更加复杂的系统应用,本身占用的内存空间也较大,而且代码显得比较累赘。例如创建一个任务,就要这样的麻烦

void OSTaskCreate (OS_TCB *p_tcb,

CPU_CHAR *p_name,

OS_TASK_PTR p_task,

void *p_arg,

OS_PRIO prio,

CPU_STK *p_stk_base,

CPU_STK_SIZE stk_limit,

CPU_STK_SIZE stk_size,

OS_MSG_QTY q_size,

OS_TICK time_quanta,

void *p_ext,

OS_OPT opt,

OS_ERR *p_err);

这么多的参数,如果初学的话,一个个去弄懂也没必要,但是如果不弄懂又学不会,所以如果入门ucos操作系统的话,本人介意先学ucos—ii,学了ucos—ii在去开ucos—iii,你会发现系统时基,任务创建和调度原理其实是一样的,只不过部分功能做了优化,通俗点讲就是更加严谨了,好了,理论只是帮助实际应用的东西,太过于执着于理论就钻了牛角尖了,本人并非老师,只是一个普通的研发人员,所以以实际产品应用为主,所以就说一下实际应用吧。

首先我们要到网上下载ucos—iii的源码,官网是:http://micrium.com/打开看到

点击红色框部分,就会进入下载界面

然后就可以下载了

咱们下载的是下面这个,

下好以后,打开相关文件夹,将源码复制到工程目录下

然后打开keil5工程,在工程目录里添加源码,目录结构如下:

好了,上面只是基础的准备工作,熟了以后大家可以根据自己喜好去创建工程目录结构,目前来说先按作者的来就可以了,这些其实是无关紧要的事情,大家目的是为了学习原理并把它应用到实际工作中嘛。

下面我们就开始真正的将这个系统和cpu关联起来了,相信大家熟悉操作系统的都知道时基这个概念,ucos操作系统同样需要一个时基,正好我们的stm32芯片都有一个系统滴答计时器,这里我们将它作为ucos操作系统的时基刚好,那么怎么做呢,其实是有两个方法,

大致原理是一样的,我们打开startup_stm32f407xx.s文件,看到这里有栈空间申请的代码

下面有相关函数调用的声明:

那么这两个函数是做什么的呢?

一个是任务调度函数,一个是systick中断服务函数,我们打开os_cpu_a.asm和os_cpu_c.c,可以看到源码

只要相关名字对应就可以了,我这里是改的startup_stm32f407xx.s启动文件的相关联部分,不希望修改ucos—iii源码,但有的人是不希望修改stm32cubemx生成的源码,而去修改ucos—iii的相应部分,都可以,只要函数名一致就可。

Ps:stm32cubemx生成代码的systick定时器为1ms一次中断,如果需要调节,可以再时钟配置函数里去修改。

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:没有了

下一篇:长安.ARM体系结构.七日谈

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号