RTX移植STM32F103,超详细~

RTX移植

【往期回顾】

☞为什么需要RTOS?

前言

keil RTX是一款应用广泛的嵌入式RTOS,具体可见官网。为什么需要RTOS,因为产品需要实时性。没有操作系统的传统编程方式,我们称为裸机编程,即在一个while大循环中,进行任务的轮询,偶尔采用中断来处理突发事件,这便导致任务之间常常需要固定的等待,实时性不高。在RTOS中,我们不再采用轮询这种方式,而是将程序分解为多个任务,然后由操作系统负责调度各个任务的执行,选择了合适的调度算法,产品的实时性就会得到大大地提升。

移植平台:STM32F103C8T6

移植系统: keil RTx5

移植

keil RTX5的源代码已经集成到MDK中,只需要在创建工程的时候选中即可。下面我将详细介绍移植步骤。

1.创建工程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. 配置工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 添加LED文件

首先,在工程项目文件夹下新建一个空文件夹USR,并在该文件夹下另外新建一个文件夹LED,即USR\LED,该LED文件用来放置我们与板子相关的led.c和led.h文件。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

这两个文件可以根据自己的板子来进行配置。,通常在LED例程中都可以找到。然后就是向工程组里面添加group和对应的文件。

在这里插入图片描述
在这里插入图片描述

接下来就是配置魔术棒。

选择RTX,以便支持RTOS

ps: 经笔者测试,勾选这个貌似会出现需要Leagcy Pack的编译错误(但是明明记得第一次没有这个错误~,很迷)。我想勾选RTX Kernel选项应该是针对以前老版本(即自动帮我们添加RTX源码),但是上面我们自己手动添加RTOS源码了,所以也就不需要在勾选这个了)。在没有勾选的情况下,经测试,RTOS系统移植正常工作。

在这里插入图片描述

勾选生成hex文件,以便烧录。
在这里插入图片描述在这里插入图片描述

修改RTE配置文件。

在这里插入图片描述

由于笔者板子上外接的时钟是8MHz,所以修改为8000000,读者可按需修改。

4. 编写测试代码

在这里插入图片描述

ps: 上面那个LED_GPIO_Config(); 参数忘记去掉void了。

方便读者理解,笔者贴上自己的led.c和led.h文件。

在这里插入图片描述
在这里插入图片描述

5. 编译烧录

在这里插入图片描述
在这里插入图片描述

烧录成功。

在这里插入图片描述

开发板上led灯闪烁正常,系统移植成功!

在这里插入图片描述
移植到其他M系列都是一样的,有什么问题,大家可以给我留言,这个RTX移植还是非常简单的,希望对大家有所帮助。

【下篇阅读】

线程-RGB_LED灯闪烁

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
### 回答1: STM32F103是STMicroelectronics(意法半导体)推出的一款32位ARM Cortex-M3内核的微控制器系列产品。而RTX则是Keil MDK(Microcontroller Development Kit)中提供的一种实时操作系统,用于在嵌入式系统中管理任务和资源。 要配置STM32F103RTX,首先需要安装MDK-ARM开发环境和ST-Link驱动程序。接下来,可以使用Keil MDK提供的"CubeMX"工具生成工程代码,其中包括了RTX的配置。 在CubeMX中,可以选择需要的外设和引脚功能,然后配置RTOS(RTX)选项。在RTOS选项中,可以选择启用RTX,并设置时钟频率以及堆栈和线程的大小。还可以设置RTOS的优先级和任务调度方式等相关参数。 配置完毕后,CubeMX会自动生成代码,并生成工程的HAL(Hardware Abstract Layer)驱动文件。接下来,可以使用Keil MDK打开该工程,并将生成的代码添加到工程中。然后,编写应用程序代码,利用RTX提供的API函数来创建任务、互斥信号量、消息队列、定时器等,实现所需的多任务管理和资源共享。 最后,通过编译、烧录和调试,可以将配置好的RTX程序部署到STM32F103微控制器上运行。在运行过程中,RTX会按照设定的优先级和任务调度方式来管理系统中的任务和资源,确保多任务的协调和实时性。 总之,配置STM32F103RTX需要安装MDK-ARM开发环境、ST-Link驱动程序和CubeMX工具,通过CubeMX生成RTX的配置代码,然后结合Keil MDK编写应用程序代码,并最终将程序烧录到STM32F103上运行。这样,就可以实现对STM32F103的多任务管理和实时操作系统的使用。 ### 回答2: STM32F103是STMicroelectronics推出的一款基于ARM Cortex-M3内核的32位微控制器。RTX(Real-Time eXecutive)是Keil MDK软件套件中的一个实时操作系统(RTOS),用于编写实时响应和多任务应用程序。 要对STM32F103进行RTX配置,可以按照以下步骤进行操作: 1. 下载安装Keil MDK软件套件,并打开Keil uVision5集成开发环境。 2. 在工程目录下创建一个新的工程,并选择正确的STM32F103系列芯片作为目标设备。 3. 在源文件夹中创建一个名为"cmsis_os.c"的新文件,并在文件中包含"CMSIS/RTOS2/Include/cmsis_os2.h"头文件。 4. 在"cmsis_os.c"文件中定义一个全局变量作为操作系统对象: ```c osKernelState_t osKernelRunning; // 操作系统状态 ``` 5. 在"main.c"文件中,添加以下代码以初始化RTX: ```c #include "cmsis_os2.h" int main(void) { osKernelInitialize(); // 初始化操作系统 osKernelRunning = osKernelRunning; // 设置操作系统状态为运行中 osKernelStart(); // 启动操作系统 while(1) {} // 进入主循环,等待任务执行 } ``` 6. 在工程配置(Options for Target)中,选择RTX作为操作系统,并设置正确的操作系统堆栈大小和任务堆栈大小。 7. 在工程目录中创建一个新的任务文件,并在文件中定义一个任务函数。例如,创建一个名为"task1.c"的新文件,并添加以下代码: ```c #include "cmsis_os2.h" void task1(void *argument) { while(1) { // 任务执行的代码 } } ``` 8. 在"main.c"文件中添加以下代码以创建并启动任务: ```c #include "cmsis_os2.h" extern void task1(void *argument); // 声明任务函数 int main(void) { // ... osThreadNew(task1, NULL, NULL); // 创建并启动任务 // ... } ``` 9. 编译并下载程序到STM32F103芯片上,并通过调试器进行调试。 通过以上步骤,你可以在STM32F103上成功配置和使用RTX实时操作系统,并编写适用于该微控制器的实时响应和多任务应用程序。注意在编写任务代码时,需要遵循RTX的API规范和RTOS的原则,确保任务能够按照预期执行。 ### 回答3: stm32f103系列是意法半导体推出的一款高性能微控制器,它采用了高性能ARM Cortex-M3内核,拥有丰富的外设和强大的处理能力。 RTX是一种优秀的实时操作系统,可以帮助开发者更好地管理任务调度和资源分配,提高系统的稳定性和可靠性。在stm32f103中配置RTX需要以下步骤: 1. 首先,下载并安装Keil MDK开发环境,该软件包含了RTX实时操作系统。 2. 打开Keil MDK,创建一个新的项目。 3. 在创建项目时,可以选择指定所需的STM32F103系列设备。 4. 在项目创建完成后,需要添加RTX的库文件。可以在Keil MDK的安装目录中找到RTX的库文件,添加到项目中。 5. 配置RTX的相关参数。可以通过在项目中创建的配置文件中修改相关参数,例如任务的优先级、堆栈大小等。 6. 在主函数中,初始化RTX,并创建需要的任务。可以使用RTX的API函数来创建任务和设置任务的优先级。 7. 在任务中,可以编写需要实现的功能代码。可以使用RTX提供的API函数来实现任务间的通信和同步,提高系统的效率。 8. 最后,编译和下载代码到stm32f103系列设备,即可开始测试和运行。 需要注意的是,对于初学者来说,配置RTX可能会有一定的难度。建议参考官方的文档和示例代码,以便更好地理解和掌握配置RTX的方法。同时,也可以参考其他开发者的经验,通过网络上的论坛和社区进行交流和学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rob月初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值