ⅰ、概述
上一篇文章是讲述uc/os-ii ports下面os_cpu_a.asm、os_cpu_c.c和os_cpu.h文件底层端口代码的移植(修改)和说明,接着上一篇文章来讲述关于ucos移植应用部分的代码。
该文主要针对uc/os-ii 上层应用(配置os、新建任务等)来讲述。
请下载“ucos2_stm32f1_3个简单任务”作为参考工程。
ⅱ、下载(请到我博客下载)
笔者将f0、f1、f3、f4移植到最新ucos2.92上。移植好的、独立的4个工程供大家下载学习、研究。建立的任务都是一样的,只是针对芯片内核不同,ports目录下相关的源代码有差异、标准外设库也存在差异。每一个系列针对不同型号芯片只需要适当改一下“型号”就行了。
提供下载的软件工程都是在板子上运行,保证没问题才上传至360云盘。下载提供下载的软件工程是在上一篇文章的基础上增加了os_cfg.h系统配置中文注释,包含了stm32f0、f1、f3、f4系列独立的软件工程。
ucos2.92_stm32(f0、1、3、4)3个简单任务(增加os_cfg中文注释)
360云盘下载地址:
https://yunpan.cn/cbsmginzx856g访问密码 4242
ucos源代码工程
官网下载(需要账号):
https://www.micrium.com/downloadcenter/download-results/?searchterm=hm-stmicroelectronics&supported=true
360云盘下载(定期更新至最新):
https://yunpan.cn/crzcf8esacehe访问密码 1235
st标准外设库
官网下载(需要账号):
http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software.html?querycriteria=productid=sc961
360云盘下载(定期更新至最新):
https://yunpan.cn/csacpgejmsfr8访问密码 60ae
参考资料:
https://yunpan.cn/crcdst73gwt6j访问密码 499e
ⅲ、工程目录结构说明
文件结构和工程目录结构对应关系如上图所示。
第一类(标准外设库):
startup code:启动代码
stm32f10x_stdperiph_driver:标准外设库库驱动
cmsis:标准接口
第二类(µc/os-ii实时内核):
uc/os-ii source:内核源代码(与处理器无关)
uc/os-ii ports:os端口底层代码(与处理器、编译平台有关)
第三类(用户应用):
bsp:应用底层代码(初始化、驱动等)
app:应用实现代码(配置os、应用等)
该文主要针对第三类app进行移植描述,包括os_cfg.h、app_cfg.c、app_task.c文件等。
ⅳ、配置os_cfg.h文件
os_cfg顾名思义,它就是系统配置的意思,它位于工程app目录结构下面,主要是系统上层配置和应用。
1.各项参数
各项参数里面针对初学者,主要有三个重要的参数,其他参数暂时可以不用深入理解。
三个重要的参数:
#define os_lowest_prio 63u
#define os_max_tasks 10u
#define os_ticks_per_sec 100u
这三个参数需要重点理解,详情可参看中文注释。
对于hooks函数是我们上一篇文章讲述os_cpu_c.c里面相关的函数,这里os_cpu_hooks_en会被系统调用,将其定义为使能。
关于os_debug_en,我们不使用系统自带的调试功能,就不使能。
2.任务堆栈大小
这里和我们自己建立的任务堆栈差不多的意思,将会在下面讲述app_cfg讲解。
3.任务管理
任务管理主要是针对uc/os-ii source结构下os_task.c文件里面的源代码,os_task.c文件里面就包含了任务建立、删除、挂起等关于任务的一些函数接口,我们需要使用那些功能,这里就需要打开。
如创建任务:
#define os_task_create_en 0u
#define os_task_create_ext_en 1u
我们使用扩展方式创建任务,也就是升级版本创建任务的函数。
4.系统其他功能
了解过uocs系统的人可能知道,ucos系统有多种功能,也就是可以建立多任务之间通信的功能,每一种功能对应一个源代码文件。
从上图可以看得出来,每一种功能够有使能全局的宏定义,只有使能了全局宏定义才可以使用里面的功能,里面各个模块(函数接口)也是配置了使用和不使用的的宏定义。
关于ucos2更多功能,我会在后期整理关于ucos系统相关的知识,也就是这里所说的其他功能,敬请关注微信等待,后期第一时间在微信发布消息。
ⅴ、配置app_cfg.h、.c文件
app_cfg.c文件位于工程app目录结构下面,主要用于系统应用的配置。
1.任务优先级、堆栈
我们建立任务需要对任务优先级和堆栈进行一个定义,它位于app_cfg.h文件下面。
这里任务数和最小优先级数值需要和os_cfg.h文件的宏定义对应才行。
2.系统滴答
我们在前两篇文章讲述过关于系统滴答的,但讲的是屏蔽micrium官网提供的os_cpu_systick配置(位于os_cpu_c.c文件下)。
这里是兼容st(也是m3内核标准的)的函数接口,所以就不使用micrium官网提供的os_cpu_systick配置。
3.建立任务
我们建立任务就是在系统里面分配一定的空间,给我们的应用提供一个函数接口(apptask1、apptask2、apptask3)。我们一旦启动了系统(开始任务),相关的函数就会逐步执行。
ⅶ、建立任务(app_task.c)
我们使用操作系统的最终目的还是需要执行我们的应用,我们这里简历了3个简单的应用(任务),位于app_task.c源文件下面。
应用比较简单,就是变化led,至于ostimedly(50)函数,可能初学者不是很理解,其实就是延时50个滴答。
我们在os_cfg.h文件中定义#define os_ticks_per_sec 100u,也就是每秒100个滴答,ostimedly(50)就是延时了0.5秒的意思。
ⅷ、文件比较工具
对于前面几篇文章,可能有些人比较关注我们移植的过程中到底修改了那些文件,这里就给大家推荐一下“文件比较工具”,网上有很多相关的工具,可以自己搜索下载。也可以到我360云盘下载:
https://yunpan.cn/cbsyfrw3iiut3访问密码 7155
这里我们拿beyond compare为例,给大家看一下效果:
实施工业物联网战略的方案
什么是白炽灯
苹果不行了iphone8跌落冰点?国内手机市场发展迅速,小米7骁龙845将于明年2月首发
Arduino的基础教程
汽车雾灯改装及电路图
UCOS2_STM32F1移植详细过程 (四)
从英国化合物半导体中心看化合物半导体集群
前端UI框架Svelte 4正式发布
影响基于等厚干涉原理测量膜厚精度的因素分析
便携式气体检测仪应用领域是哪些
开关二极管的开关作用的实现原理
桁架机器人的意义
万象奥科嵌入式核心板解决方案!
CAD图纸打印比例
泰科推出CAT 5E迷你主干网络线缆
除了SiC外,这15个二极管知识点你也来学学
如何减少电源纹波
串口uart和RS232,RS485有什么关系及联系
双边带抑制载波调制器电路图
工业一体机触摸屏的功能都有哪些