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

查看: 872|回复: 1

UCOS2_STM32F1移植详细过程(二)

[复制链接]

49

主题

19

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-2-16
发表于 2016-6-26 23:32:07 | 显示全部楼层 |阅读模式
Ⅰ、概述
    打开上一篇文章新建的工程,是提取的ST标准库里面源代码文件和UCOS工程包源代码文件。下载过的朋友可能会知道,直接编译那个工程会有大片的错误和警告,原因在于那个工程是没有经过修改源代码的工程,接下来就是讲述一步一步修改源代码的过程(也就是所谓的移植过程)。
    该文接着上一篇文章来讲述“UCOS移植详细过程”,上一篇文章是讲述准备工作、文件提取并整理、新建UCOS工程等工作。该文讲述UCOS移植过程中修改部分源代码(底层代码、系统配置等)工作。


笔者将“UCOS移植详细过程”分为多篇文章来讲述,敬请关注。
关于本文的详情请往下看(微信请点击“阅读原文”查看内容链接内容)。


Ⅱ、ST芯片配置
配置ST型号的方法有两种:使用标准库源代码配置和工程配置.

1.源代码配置
打开工程 -> 打开源代码“stm32f10x.h”文件。
使用F103大容量的芯片:取消第68行STM32F10X_MD的注释,这里需要和我们的启动代码匹配startup_stm32f10x_hd.s。
使用标准外设库:取消第105行USE_STDPERIPH_DRIVER的注释,使用标准外设库,我们使用stm32f10x_conf.h文件来配置使用到的外设库。


2.工程配置
打开工程 -> Project -> Options for Target -> C/C++,在该选项预定义里面添加STM32F10X_MD,USE_STDPERIPH_DRIVER这两个宏定义即可。

注意:两种方法用一种即可。效果图如下:
ST配置.gif


Ⅲ、配置系统滴答时钟
系统的运行离不开系统滴答,就像我前面说过的:系统滴答的作用,就是驱动整个系统工作的心脏,如果没有了它,就等于人没有了心跳。


1.初始化滴答
我们使用ST的滴答SysTick来配置作为操作系统的滴答时钟,芯片SysTick是属于内核(Cortex-M3)的一部分,所以,在初始化的时候是调用CM3里面的源代码(SysTick_Config函数)。
这里说明一下,只要使用Cortex-M3内核的芯片都有这个功能,可以说SysTick是专门为系统而设计的。

1.初始化系统滴答.png
系统滴答配置如上图,位于app_cfg.c源文件下面。


2.滴答中断配置
中断函数需要调用系统相关的函数,也就是系统进行滴答相关的函数,这里是规定这么调用的。
2.滴答中断.png


Ⅳ、裁剪系统(配置os_cfg.h)
对于我们常说的系统可裁剪,其实就是对系统某些功能打开和关闭,使用到的功能才打开,不使用的功能就关闭(即使能和失能),这个文件就集中在os_cfg.h文件里面。

这里先说一下重要的几个选项:
1.最低优先级OS_LOWEST_PRIO
这个与我们配置任务优先级有关系,最低优先级任务配置的最大值。我们所说的任务优先级关系是:优先级越小,数值越大; 相反,优先级越大,数值越小。
位于os_cfg.h文件第39行:
#define OS_LOWEST_PRIO           63


2.系统每秒滴答数OS_TICKS_PER_SEC
这个宏定义的意思就是说,系统每秒钟滴答多少次,它与系统延时(OSTimeDly)关系比较重要,我们的例子中OS_TICKS_PER_SEC等于100,调用OSTimeDly(100);相当于的延时100个滴答,即延时1秒的意思。
位于os_cfg.h文件第51行:
#define OS_TICKS_PER_SEC        100


3.任务堆栈大小OS_TASK_xxx_STK_SIZE
这个几个宏定义在使用相应功能的时候有用,如果RAM资源有限,这个任务堆栈的大小最好根据任务来评估一下,资源有限时不要太大,当然也不能小于程序正常运行。
位于os_cfg.h文件第55 - 57行:
#define OS_TASK_TMR_STK_SIZE    128
#define OS_TASK_STAT_STK_SIZE   128
#define OS_TASK_IDLE_STK_SIZE   128


4.其他
还有很多与系统其他资源相关的配置,正常的情况下是需要的时候才开启,不用尽量关闭。一是节约资源,二是减少编译时间。后期我会将中文注释在后面。


Ⅴ、下载
我将移植完成,建立了3个简单任务的例程放在360云盘供大家下载与参考:
http://yunpan.cn/cRIpR5bwHMCCY  访问密码 3885


UCOS2基于STM32F107的软件工程包(官网原版):
Micrium官网下载地址(需要账号):

我360云盘下载地址:
http://yunpan.cn/cRzcf8eSacEhE  访问密码 1235


标准外设库:
ST官网下载地址(需要账号):


我360云盘下载地址(定期更新):
http://yunpan.cn/cSaCpGejMSfr8  访问密码 60ae



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


Ⅶ、最后
关注微信,回复“更多内容”,将获得更多内容(如:UCOS实例等,不断更新中......)。
本着免费分享的原则,方便大家手机学习知识,定期在微信平台分享技术知识。如果你觉得分享的内容对你有用,又想了解更多相关的文章,请用微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注,将有更多精彩内容等着你。
公众号0.5m.jpg



<
回复

使用道具 举报

100

主题

3617

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2016-6-27 10:01:17 | 显示全部楼层
回复 支持 反对

使用道具 举报

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