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

【经验分享】适用于 STM32F103C8 的 FreeRTOS,STM32的多任务同时进行

[复制链接]
STMCU小助手 发布时间:2022-6-21 13:05

b7fab167dd363ff71e43e0e67266c046.png

概述:适用于 STM32F103C8 的 FreeRTOS

STM32F103C 是一款ARM Cortex M3 处理器。我们可以在 Arduino IDE 中使用适用于 STM32F103C8 的 FreeRTOS。我们也可以使用 Keil,但这个过程相对冗长:我们需要将下载的文件下载并粘贴到 Keil 路径中,这里我们使用 Arduino IDE 的方式。

要了解 FreeRTOS 文档和方法定义,您可以查看FreeRTOS STM32F103C8。

什么是 FreeRTOS?

FreeRTOS 可能是一种免费的开源实时操作系统 (RTOS),可在包括 STM32 在内的许多流行微控制器上运行。

操作系统可以是在计算系统期间管理其他软件和硬件资源的软件。通用操作系统通常在设计时关注用户体验。

例如,假设我们正在为手机操作系统开发一个应用程序。用户可能想要流式传输电影,因此我们可以将流式传输体验分为两个工作:工作1 从 Web 下载视频;工作2将每个视频块显示给用户。这些工作可能是等效工作的一部分程序,也就是同时进行的。在这种情况下,它们可以实现为并发运行的线程。

如果我们的处理器只有 1 个核心,我们的流应用程序可能需要在作业 1 和作业 2 之间快速跳转,以同时向用户提供下载和查看。

a407c6066ad00a8c7c03424d87857d2c.png

了解 Arduino IDE 中的 STM32F103C8 如何捆绑 FreeRTOS 非常重要。虽然 FreeRTOS 是一个允许切换任务、调度等的底层软件框架,但我们不会直接调用 FreeRTOS。ARM 已经创建了 CMSIS-RTOS 库,它允许我们形成对底层 RTOS 的调用,从而提高了各种 ARM 处理器之间代码的可移植性。

如何在 Arduino IDE 下载安装 STM32F103C8 可使用的FreeRTOS?


第1步:

在 Arduino IDE 中,首先转到 文件-> 首选项。复制下面的链接并按照下图粘贴到附加板管理器中。

65bc46da144842c14ed87081666f73af.jpg

第2步:

现在我们需要下载 FreeRTOS 库文件。如需下载,请转到项目->加载库,然后单击管理库。

AH9RE_RMFXB3](~LRL{{}XW.png

第 3 步:

现在,在搜索栏中输入 FreeRTOS,它会显示一些库文件,向下滚动并找到Richard Barry 的 STM32duino FreeRTOS。然后选择该库并单击安装。安装需要一些时间。安装后显示为INSTALLED。

$[Y%[89_P3)K$N9]M5372%Y.png

第4步:

现在我们可以在 Arduino 使用 STM32F103C8 的 freeRTOS 库了。我们为板载 LED 和另一个单独的 LED 编写一个简单的闪烁程序。

准备配件

本教程需要以下硬件。

1. STM32F103C板

2. FTDI

3. LED

4. 跳线

5. 面包板

在这里,我将一个LED 连接到 PB11。

K5NZC]H8%_J`{CW_94FI_E0.png

如何使用 FreeRTOS 在 STM32F103C8 上运行两个不同的任务?

使用两个 LED,并为这两个LED创建两个任务。一个 LED 每秒闪烁 1 次,另一个 LED 每200ms 闪烁一次。现在,让我们开始使用 FreeRTOS 编写这两个 LED 闪烁的代码。

下面是部分代码:

  1. static void task1(void * pvParameters) {

  2.   for (; ; ) {

  3.     vTaskDelay(1000);

  4.     digitalWrite(BOARD_LED_PIN, HIGH);

  5.     vTaskDelay(1000);

  6.     digitalWrite(BOARD_LED_PIN, LOW);

  7.   }

  8. }

  9. static void task2(void * pvParameters) {

  10.    for (; ; ) {

  11.     vTaskDelay(200);

  12.     digitalWrite(LED_PIN, HIGH);

  13.     vTaskDelay(200);

  14.     digitalWrite(LED_PIN, LOW);

  15.   }

  16. }
复制代码

上传代码后,即可看到结果。


收藏 评论0 发布时间:2022-6-21 13:05

举报

0个回答

所属标签

相似分享

官网相关资源

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