你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2346|回复: 4

UCOS2_STM32F1移植详细过程(四)

[复制链接]

49

主题

19

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-2-16
发表于 2016-6-30 13:51:41 | 显示全部楼层 |阅读模式
本帖最后由 ybhuangfugui 于 2016-6-30 13:53 编辑

Ⅰ、概述
    上一篇文章是讲述uC/OS-II Ports下面os_cpu_a.asm、os_cpu_c.c和os_cpu.h文件底层端口代码的移植(修改)和说明,接着上一篇文章来讲述关于UCOS移植应用部分的代码。
该文主要针对uC/OS-II 上层应用(配置OS、新建任务等)来讲述。
请下载“UCOS2_STM32F1_3个简单任务”作为参考工程。


笔者将“UCOS移植详细过程”分为多篇文章来讲述,敬请关注。
关于本文的详情请往下看。


Ⅱ、下载
    笔者将F0、F1、F3、F4移植到最新UCOS2.92上。移植好的、独立的4个工程供大家下载学习、研究。建立的任务都是一样的,只是针对芯片内核不同,Ports目录下相关的源代码有差异、标准外设库也存在差异。每一个系列针对不同型号芯片只需要适当改一下“型号”就行了。
提供下载的软件工程都是在板子上运行,保证没问题才上传至360云盘。下载提供下载的软件工程是在上一篇文章的基础上增加了os_cfg.h系统配置中文注释,包含了STM32F0F1F3F4系列独立的软件工程。

UCOS2.92_STM32(F0、1、3、4)3个简单任务(增加os_cfg中文注释)
360云盘下载地址:
http://yunpan.cn/cBsmgInzX856G  访问密码 4242

UCOS源代码工程
官网下载(需要账号):
360云盘下载(定期更新至最新):
http://yunpan.cn/cRzcf8eSacEhE  访问密码 1235

ST标准外设库
官网下载(需要账号):
360云盘下载(定期更新至最新):
http://yunpan.cn/cSaCpGejMSfr8  访问密码 60ae

参考资料:
http://yunpan.cn/cRCdSt73GwT6j  访问密码 499e

Ⅲ、工程目录结构说明
0.工程目录结构.png
文件结构和工程目录结构对应关系如上图所示。

第一类(标准外设库):
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.各项参数
1.各项参数.png
各项参数里面针对初学者,主要有三个重要的参数,其他参数暂时可以不用深入理解。
三个重要的参数:
#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.任务堆栈大小
2.堆栈大小.png
这里和我们自己建立的任务堆栈差不多的意思,将会在下面讲述app_cfg讲解。


3.任务管理
3.任务管理.png
任务管理主要是针对uC/OS-II Source结构下os_task.c文件里面的源代码,os_task.c文件里面就包含了任务建立、删除、挂起等关于任务的一些函数接口,我们需要使用那些功能,这里就需要打开。
如创建任务:
#define OS_TASK_CREATE_EN         0u
#define OS_TASK_CREATE_EXT_EN     1u
我们使用扩展方式创建任务,也就是升级版本创建任务的函数。


4.系统其他功能
4.系统其他功能.png
了解过UOCS系统的人可能知道,UCOS系统有多种功能,也就是可以建立多任务之间通信的功能,每一种功能对应一个源代码文件。
从上图可以看得出来,每一种功能够有使能全局的宏定义,只有使能了全局宏定义才可以使用里面的功能,里面各个模块(函数接口)也是配置了使用和不使用的的宏定义。
关于UCOS2更多功能,我会在后期整理关于UCOS系统相关的知识,也就是这里所说的其他功能,敬请关注微信等待,后期第一时间在微信发布消息。


Ⅴ、配置app_cfg.h、.c文件
app_cfg.c文件位于工程App目录结构下面,主要用于系统应用的配置。

1.任务优先级、堆栈
5.定义任务优先级、堆栈.png
我们建立任务需要对任务优先级和堆栈进行一个定义,它位于app_cfg.h文件下面。
这里任务数和最小优先级数值需要和os_cfg.h文件的宏定义对应才行。


2.系统滴答
6.系统滴答.png
我们在前两篇文章讲述过关于系统滴答的,但讲的是屏蔽Micrium官网提供的OS_CPU_SysTick配置(位于os_cpu_c.c文件下)。
这里是兼容ST(也是M3内核标准的)的函数接口,所以就不使用Micrium官网提供的OS_CPU_SysTick配置。


3.建立任务
7.建立任务.png
我们建立任务就是在系统里面分配一定的空间,给我们的应用提供一个函数接口(AppTask1、AppTask2、AppTask3)。我们一旦启动了系统(开始任务),相关的函数就会逐步执行。



Ⅶ、建立任务(app_task.c)
8.应用任务.png
我们使用操作系统的最终目的还是需要执行我们的应用,我们这里简历了3个简单的应用(任务),位于app_task.c源文件下面。
应用比较简单,就是变化LED,至于OSTimeDly(50)函数,可能初学者不是很理解,其实就是延时50个滴答。
我们在os_cfg.h文件中定义#define OS_TICKS_PER_SEC  100u,也就是每秒100个滴答,OSTimeDly(50)就是延时了0.5秒的意思。


Ⅷ、文件比较工具
对于前面几篇文章,可能有些人比较关注我们移植的过程中到底修改了那些文件,这里就给大家推荐一下“文件比较工具”,网上有很多相关的工具,可以自己搜索下载。也可以到我360云盘下载:
http://yunpan.cn/cBsYfRw3Iiut3  访问密码 7155

这里我们拿Beyond Compare为例,给大家看一下效果:
Beyond Compare.gif


Ⅸ、说明
相关的文章可以到我博客上查看,我也会定期更新,新内容第一时间在微信分享。
当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。
以上总结仅供参考,若有不对之处,敬请谅解。


Ⅹ、最后
更多精彩文章我讲第一时间在微信公众号里面分享。
如果你喜欢我分享的内容,你又想了解更多相关内容,请关注微信公众号EmbeddDeveloper,新内容持续更新中,后期将会有更多精彩内容出现。
公众号0.5m.jpg


<
回复

使用道具 举报

1

主题

4

回帖

0

蝴蝶豆

新手上路

最后登录
2016-7-1
发表于 2016-6-30 15:50:47 | 显示全部楼层
STM32F1 3.50固件库的 用户手册 在官网那个位置 下载呀 ,找了一通 ,没找到。
回复 支持 反对

使用道具 举报

49

主题

19

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-2-16
 楼主| 发表于 2016-6-30 16:18:32 | 显示全部楼层
limingyidz 发表于 2016-6-30 15:50
STM32F1 3.50固件库的 用户手册 在官网那个位置 下载呀 ,找了一通 ,没找到。 ...

打开我那个下载的链接,网页下半页有个可以选择的对话框,它分横向选择 和 纵向选择;  横向选择STM32 standard peripheral library就可以看见了。 实在不明白你加我微信,回复我消息就是了。
回复 支持 反对

使用道具 举报

100

主题

3617

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2016-7-1 10:15:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

450

主题

48

回帖

3

蝴蝶豆

社区小助手

最后登录
2020-7-30
发表于 2016-7-1 18:03:44 | 显示全部楼层
limingyidz 发表于 2016-6-30 15:50
STM32F1 3.50固件库的 用户手册 在官网那个位置 下载呀 ,找了一通 ,没找到。 ...

不谢

https://www.stmcu.org.cn/document/list/index/category-939
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版