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

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

[复制链接]
攻城狮Melo 发布时间:2023-10-19 15:47
其实从很早之前就想学实时操作系统(RTOS)了,但是一直没有时间去学,以前使用STM32单片机一直停留在逻辑开发以及前后台系统,而真正被广泛使用的则是RTOS。
" T5 R0 \  O6 u& M2 p7 i  H
微信图片_20231019154705.png

, p& `7 |& X) [  I: @前后台系统则是我们常用的,使用一个主循环+许多的调用函数这些构成了后系统,利用中断进行异常处理则是前系统。而RTOS则是将任务按照优先级排列,优先进行优先级高的任务例如单片机内如的中断服务函数。
( Z" _0 }: J" h: u/ x# g
微信图片_20231019154701.png

3 r5 I5 R) T; i8 c+ b$ U2 v! M; l操作更加的灵活方便,也是嵌入式软件工程师必备的技能之一。
$ q* Q% F1 Z0 ]
而FreeRTOS顾名思义,开源且免费,是我们小白入门的不二之选。! j! Z0 q4 ^! B# p  s

4 A% e! b9 o! i* X) i- x
安装FreeRTOS
" f+ U0 U- L- a0 @/ [. h. D, O1 h
某度上搜索FreeRTOS,点入FreeRTOS的官网,进入下载第一个安装包(包含源码)
, X, ^1 Q8 ^: s8 r) J5 U1 x- M
) V% W; X) R# @5 h2 L9 J
微信图片_20231019154657.png
9 y' N2 D* v* U- z" i5 J5 [
微信图片_20231019154652.png

4 w( w4 Y1 p; C) q& P3 G; \1 _, l下载好源码后,我们利用CUBEMX创建我们的工程,我选择的是STM32F407ZGT6这块芯片,之后将我们的下载的RTOS中的Source文件夹拷贝到我们利用CUBEMX创建的工程目录中。
微信图片_20231019154649.png
5 T3 H0 T9 E9 u3 g
其中的portable文件夹中只需保留以下文件即可,在工程中,我们将这些文件夹的内容全部添加到工程内(MemMang中的文件是实施方法,众多的heap文件我们只需要添加一个即可),并从之前FreeRTOS的源码中找到Demo文件夹,找到我们对应的单片机的文件夹。将FreeRTOSConfig.h文件即配置文件拷贝入我们的工程目录,这样子即可完成工程模板的创建。
' Q" T$ P# P/ a" t: H9 s' ?9 Q
微信图片_20231019154646.png

9 Y, q) R( H" M6 Y
微信图片_20231019154642.png

- ^( O/ m8 b- T3 N" D+ [之后我们编译工程,会发现有关于系统时钟的报错,没有SystemCoreClock的定义。$ H: t, u/ F9 H7 ~4 j: c
  k6 C' w% s+ G' \4 h- F
微信图片_20231019154638.png

& e. j7 }/ i7 h
微信图片_20231019154636.png
; C0 u8 d- ~1 N" e
   我们在FreeRTOSConifg.h文件中找到44行,发现这个定义是并不是在MDK这个平台使用的,我们将其进行修改,使之在MDK平台适用
  1. #if defined(__ICCARM__) || defined(__CC_ARM) ||defined(__GNUC__). e* ]/ y+ G% ^3 i
  2.   #include <stdint.h>; J" a& M. ^9 f4 C
  3.   extern uint32_t SystemCoreClock;* V9 S3 U4 a: |( i4 r! H) r0 P
  4. #endif
复制代码

8 Z$ y( N# i, c$ q9 n( B
2 l# V' a2 R2 x6 D% i
之后又爆出许多错误,如下所示主要是一些函数的重复定义,在heap文件之间的重复定义。
% e3 p6 [/ F) \
微信图片_20231019154632.png

5 V8 a  k$ u* B我们去这些文件中挨个注释掉这些重复的函数。(我上述是添加了好几个heap文件,实际上添加一个heap文件即可)

8 @" F5 s9 X/ M4 e3 K
之后我们又遇到了几个报错,这些报错主要是在FreeRTOSConfig.h中我们使能了几个构造函数,但是并没有定义这些构造函数,因此我们需要在FreeRTOSConfig.h中关闭这些构造函数

+ Y7 ^3 B9 Q8 y/ R$ `8 H; n( d& t1 b9 w1 \: Q, u
微信图片_20231019154629.png
% |, ~) |0 }) }
将对应的构造函数值改为0即可关闭这些构造函数。
7 T; K. c, r4 _; N2 K9 A
  a; t& L. ?5 f$ o* Z

+ [' H" R$ L. D' s7 z6 H
微信图片_20231019154626.png

& l; \9 p: n+ [5 a这样子我们的编译就没问题啦
/ s4 |! E( h( U$ h7 c1 X
微信图片_20231019154620.png
9 A" C6 P! c" I; ~
转载自:电路小白
如有侵权请联系删除
+ Y5 `& b5 f( e
) Z; Z! R* P3 R# L8 q
' q0 e3 i7 L8 f( S6 q" S
收藏 评论0 发布时间:2023-10-19 15:47

举报

0个回答

所属标签

相似技术帖

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