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

STM32F1移植RT_Thread简明教程

[复制链接]
STMCU小助手 发布时间:2022-8-20 17:00
一. 简介
1 W7 A, o! j1 o+ [最近开始学习RTOS了,也是第一次接触RTOS,本人以国内的RT-Thread作为学习的一款RTOS,支持国产嘛。/ \1 P$ J, L: G% i: p  e: ]
在搭建环境的时候,遇到了许多问题,也是参考了许多博客,但是与官网上的步骤都大同小异,给了像我们这样的小白很大的打击。
; Y: Q/ ~, j! c+ P: T* ^接下以以STM32F1移植极简版硬实时内核Nano(基于keil5),给大家介绍如何快速的搭建环境。
/ u/ Y* s* j7 I9 r5 V- q! N. z* `+ S, H8 G) o% ~5 W

$ S0 y: p0 G. \' Y二. RT-Thread的安装# I- Z: F  n7 I4 e
这里的安装方法有两种,和之前需要使用stm32f1系列的单片机一样,需要下载安装pack包。$ b! }. u1 T& t6 x$ q) ~

& s, |. m  P$ s; X$ t: I第一种方法是在keil里面,直接下载安装2 |& e8 E# ^8 v+ b$ @
e3d1b576a85d435686041bc0d08f939d.png ' a' L! d- ^. ?) s% e3 y4 i6 |
, B1 Y& I7 i6 T' V6 Y$ U# R/ F
第二种是,下载pack,双击安装,我这里使用的是这种方法。(微信公众号回复 RT-Thread-Pack 可以获取下载链接)
/ v6 ~: f: ]) H7 Y: Q1 C) ?+ U$ O- u" S6 f" k' I
52d8294ba5b644c5a4bf3c8f0576997a.png 0 [: T% E2 w# C3 ~/ o7 l( H! }

$ N& C+ ?/ V: R1 P! X+ @! V三. 准备好空白的裸机demo9 h' r* z2 Q# }3 o6 R7 H" U# e" w
最好是初始化一个外设,我这里使用的是最小系统,使用的是led灯闪烁的demo。
; n6 \0 F* J6 d) J2 Y! h
% ^- O1 H& y: t! f3 I# d安装好pack后,打开demo工程,点击这个按钮,然后找到RTOS,勾选kernel就可以。
; h% \# c' y2 ]: N, ?$ R/ c/ ~  y$ y. _3 X7 M: @* q2 t) A
340399aece1b46ceba5d5b77e06c656f.png
7 Z# E& b; I+ J5 C5 s4 I
: p. m( L) Q# `* E3 A c4bc13590196481bb38516f7e404ecda.png + W5 v4 S- x) K1 c$ A8 P* Q4 s9 O
( E* i& t0 J, V/ A4 l. [4 f
勾选好之后,就可以在我们的项目里面看到添加进来的相关文件了
- Z7 U; b- w' W
0 R: z0 o3 `! K5 E7 \( | df5d83ac59c749a794cfee8ac05913ee.png
* _, \, i6 [( J( u% s7 M, S
8 k6 B% c2 z. J5 I/ P3 [到这里相关的环境问题就完成的大半部分了。就快o( ̄ヘ ̄o#)成功啦
) ^+ C" W0 ]" H! ^7 W
. a9 c+ F7 \% b; j8 J四. board.c文件的修改(核心)6 M2 t) L- r2 C3 h2 O
直接运行程序的话,会报这个错误+ F' O9 B: ]# ]7 f& l5 z
#error “TODO 1: OS Tick Configuration.”
2 Q( |, l, O8 M% T, m% a( |: B
- C1 L" z  n8 P( k8 h$ |2 H. ]所以第一件是将其注释掉,然后阅读下面的注释。 需要使能硬件定时器也就是我们所说的滴答定时器,然后去调用rt_os_tick_callback函数,也是就滴答定时器中断函数调用这个函数。- x* }( C! H) _5 h

9 N  m4 J1 G6 L' l6 v, O 18dd7dbce6754a78b3bc9d8e5d1e5b74.png . E: C7 H" W+ X3 b/ \
5 l0 m/ G/ g" F
编写滴答定时器与中断函数。这些函数直接写在board.c文件中,就好了
& E( |, T/ C7 w* Q7 F
+ I" t! `0 `  w" j- q 4b47e33683744106a4c96050466e1d30.png
3 c9 n( u2 d+ N
0 W; {5 S% ?, Q: k$ X- c注释掉修改的相关的中断函数,这里可以查看官网的解释。SysTick_Handler也要注释,因为我在这个文件夹里面重新定义了。
  X$ _' O1 a9 Q2 t2 r
" Q$ q) X! ]7 D& l 1d065cf60ca54084896e3939410a3006.png
/ g1 N1 Z( y4 G$ @  j8 J+ y4 X' `2 A; [. s- G3 P4 C
最后,整个文件改动如下: C9 b7 I+ {$ S0 O0 N6 _, \
/ z: W8 x/ h( u' m: G2 `0 P4 I) f
a8cc32db380547eeb8599eba37071dee.png
% `: K1 r% Z' Z! |  h9 Q
) |2 t4 ~$ V- D1 _% B5 L) A在main函数中添加#include “rtthread.h”,然后调用RT提供的延时函数,如果led灯闪烁,着说明配置成功
' f& ], B. x5 s* P" S: w
2 O$ J4 }9 x0 u 75e15aed44494a6ab78aab23469a85a0.png
: O4 U$ ?5 }" q2 w9 Y& U8 H: n7 S) u) e6 J

3 x2 ]* T" r4 }$ n' b4 p
赞 收藏 评论0 发布时间:2022-8-20 17:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版