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

基于STM32F407的FreeRTOS环境搭建经验分享(1)

[复制链接]
攻城狮Melo 发布时间:2023-10-19 15:47
其实从很早之前就想学实时操作系统(RTOS)了,但是一直没有时间去学,以前使用STM32单片机一直停留在逻辑开发以及前后台系统,而真正被广泛使用的则是RTOS。) a% ?4 e, P# e% L% }4 {
微信图片_20231019154705.png
% Z5 O& m8 p7 d% M* P8 x
前后台系统则是我们常用的,使用一个主循环+许多的调用函数这些构成了后系统,利用中断进行异常处理则是前系统。而RTOS则是将任务按照优先级排列,优先进行优先级高的任务例如单片机内如的中断服务函数。$ X5 D1 p: W. l- P. z6 ?
微信图片_20231019154701.png
8 n% N+ T* Y6 z3 R& Z" c3 p
操作更加的灵活方便,也是嵌入式软件工程师必备的技能之一。+ r2 }  o5 y' t' p( l
而FreeRTOS顾名思义,开源且免费,是我们小白入门的不二之选。1 p5 |# ?9 [3 I$ H

5 c: e) n5 b& o* o% C
安装FreeRTOS# S$ ~. J+ @* e( ^  ]+ U
某度上搜索FreeRTOS,点入FreeRTOS的官网,进入下载第一个安装包(包含源码)" R: D1 K$ ?& ]; c- v) Q

8 y0 |8 C! [& p: ]) J7 J5 q
微信图片_20231019154657.png

- c% P* a' p( y( V% J/ N0 Y
微信图片_20231019154652.png

% ~4 t, I0 G( z5 U' P, F& c下载好源码后,我们利用CUBEMX创建我们的工程,我选择的是STM32F407ZGT6这块芯片,之后将我们的下载的RTOS中的Source文件夹拷贝到我们利用CUBEMX创建的工程目录中。
微信图片_20231019154649.png

  {" u, V; m3 q) ^& K其中的portable文件夹中只需保留以下文件即可,在工程中,我们将这些文件夹的内容全部添加到工程内(MemMang中的文件是实施方法,众多的heap文件我们只需要添加一个即可),并从之前FreeRTOS的源码中找到Demo文件夹,找到我们对应的单片机的文件夹。将FreeRTOSConfig.h文件即配置文件拷贝入我们的工程目录,这样子即可完成工程模板的创建。, l1 n0 X. y1 U: F$ U
微信图片_20231019154646.png
$ c$ r* H* F; k5 i
微信图片_20231019154642.png

4 P7 Q/ ~) C+ O) H, m# W4 S之后我们编译工程,会发现有关于系统时钟的报错,没有SystemCoreClock的定义。
" V. N- a$ p* f( \" X% u2 c3 g6 Z5 n& J+ f4 c! A
微信图片_20231019154638.png
7 S/ h% a! O7 F) u. c0 L
微信图片_20231019154636.png

  r- j' r5 Z  B, [# a
   我们在FreeRTOSConifg.h文件中找到44行,发现这个定义是并不是在MDK这个平台使用的,我们将其进行修改,使之在MDK平台适用
  1. #if defined(__ICCARM__) || defined(__CC_ARM) ||defined(__GNUC__)
    6 ], k0 ]( Y2 A0 Y; L
  2.   #include <stdint.h>
    . a. o; m5 f& r+ c5 M* U
  3.   extern uint32_t SystemCoreClock;2 Q1 }3 Y+ ^/ I6 k! H; S: F1 }
  4. #endif
复制代码

' u$ @9 S& G3 X8 Z

& `9 o2 V# b+ U' A) O+ K/ {& Q之后又爆出许多错误,如下所示主要是一些函数的重复定义,在heap文件之间的重复定义。
. I' d, U8 L! I
微信图片_20231019154632.png
# P- K5 X) E. @& Y
我们去这些文件中挨个注释掉这些重复的函数。(我上述是添加了好几个heap文件,实际上添加一个heap文件即可)

% t2 u& W! g/ a* H
之后我们又遇到了几个报错,这些报错主要是在FreeRTOSConfig.h中我们使能了几个构造函数,但是并没有定义这些构造函数,因此我们需要在FreeRTOSConfig.h中关闭这些构造函数
+ T# O& O0 v( I! S
& a9 K$ ]: U1 n. }5 D
微信图片_20231019154629.png
& @- x8 A4 r4 x  h( }3 k
将对应的构造函数值改为0即可关闭这些构造函数。
  C+ @3 v% V+ p# u4 Z
. u& t7 t$ t8 M9 O9 d  B6 }
1 n# @! w$ a1 ?8 P) X
微信图片_20231019154626.png

' n5 H3 s2 k2 k9 F& `这样子我们的编译就没问题啦
; ~  J2 M4 g/ n3 ?, M
微信图片_20231019154620.png
" s* G9 i$ O' O9 Z- f2 Q
转载自:电路小白
如有侵权请联系删除
% N) p" e; x; m  ?% O' S

* s* W! X% l: g* Z
$ P  B7 ]; Q* O' j
收藏 评论0 发布时间:2023-10-19 15:47

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版