|
——/// 概述 \—— ☟☟☟ RT-Thread Nano是一个精炼的硬实时内核,支持多任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性,用户可以直接从MDK的Run-time Environment获取,可以使用shell高效地进行在线动态调试。 在支持semaphore和mailbox特性,并运行两个线程(main线程+idle线程)情况下,ROM和RAM依然保持着极小的尺寸。我们基于Cortex M0 MCU的一个例子,编译后的大小(ROM: 3.25K, RAM: 1.04K),除去MCU需要的ROM和RAM, RT-Thread Nano本身需要的ROM是2.5K , RAM 是1K。
+ O. k, P( v/ _2 e0 F# a4 P+ c. {6 j" V / Y4 e. N [7 \3 r8 U9 t 接下来将描述如何在MDK5上基于RTE(Run-Time Environment), 从裸机开始,创建一个RT-Thread RTOS的小系统工程。 , F! M' a" |' k' O* h7 ]01 Pack安装 ' h( S( l5 K4 n% o5 b$ Y# |3 r$ |4 I( d0 ?" q& F Pack可以通过MDK联网安装,也可以离线安装。下面开始介绍两种安装方式。 Pack Installer安装打开MDK软件,点击工具栏的Pack Installer图标:
! x1 D5 Y, H$ Q* x8 Y: g5 J" T0 ~ + z) h% B5 o$ p6 t+ a0 r& p点击右侧的Pack,展开General,可以找到rt-thread::rthread,点击对应的Action的Install,就可以在线安装Pack了。安装成功后Action栏显示 ”Up to date”。 . b5 v, N9 J3 g5 v7 A% v" V1 X, c3 e; `' c2 }+ Y
手动安装我们也可以从官网下载安装文件。双击下载好的文件进行安装:
02 3 k5 Q5 t. y. T; M9 J) W基础工程准备在开始创建RT-Thread小系统之前,我们需要准备一个能正常运行的裸机工程。作为示例,这边使用的是基于STM32L072-Discovery 和Low-Level Library的一个LED 闪烁程序。程序的主要截图如下: : w) F% o/ z' ~ a6 H" u* f& ]
在我们的例程中,编译下载程序后,就可以看到3个LED交替闪烁了。读者可以根据自己的需要使用其他芯片,完成一个简单的类似裸机工程。 ! j) [ P+ j$ A6 |03 添加RT-Thread到工程基于一个可以运行的裸机程序,我们来添加RT-Thread到工程。如下图,点击Manage Run-Time Environment。
在Manage Rum-Time Environment里”Software Component”栏找到RTOS,Variant栏选择RT-Thread,然后勾选kernel。就可以将RT-Thread内核添加到工程了。点击”OK”就添加RT-Thread到工程了。 . S, ?, K! Q7 o1 f$ T
现在可以在Project看到RT-Thread RTOS已经添加进来了,展开RTOS,可以看到这些文件被添加到工程:
04 2 b" Q, h2 ?1 ]1 n适配RT-Thread在board.c完成systick的配置。以STM32L072为例,需要添加以下代码:
因为RT-Thread用到了异常处理函数HardFault_Handler()和悬挂处理函数 PendSV_Handler(),所以用户代码需要保证这两个函数没有被使用。 最后替换掉上面例程的delay函数:
下面是完成修改的代码: # S: G2 H+ j$ w k
编译程序之后下载到芯片就可以看到基于RT-Thread的程序运行起来了。 ( g" t6 d5 s/ [) Y05 更多例程更多参看例程可以在MDK上通过Pack Installer找到。点击Pack Installer图标:% s8 c- n$ m# d/ o' G0 a 6 [# `( {* }- }* u: ?2 t & s; s* \; O0 L. v( A
我们可以在Search里输入stm32l0,点击Device里的STM32L0 Serials,然后点击右侧的Example,可以看到右侧有基于stm32l0的两个例程。 4 k8 m/ |5 g# q! M x* y
获取更多关于RT-Thread的使用(线程调度和管理、定时器、任务间同步及通信等等),请在本公众号回复关键词:RT-Thread编程手册。0 Z! l; F5 i0 F7 Z 请添加微信13924608367,注明rt-thread,拉进群。 |
微信公众号
手机版
这只是个开始