快捷搜索:  汽车  科技

stm32f103用什么做gui(适用于STM32F103C8的)

stm32f103用什么做gui(适用于STM32F103C8的)了解 Arduino IDE 中的 STM32F103C8 如何捆绑 FreeRTOS 非常重要。虽然 FreeRTOS 是一个允许切换任务、调度等的底层软件框架,但我们不会直接调用 FreeRTOS。ARM 已经创建了 CMSIS-RTOS 库,它允许我们形成对底层 RTOS 的调用,从而提高了各种 ARM 处理器之间代码的可移植性。如果我们的处理器只有 1 个核心,我们的流应用程序可能需要在作业 1 和作业 2 之间快速跳转,以同时向用户提供下载和查看。FreeRTOS 可能是一种免费的开源实时操作系统 (RTOS),可在包括 STM32 在内的许多流行微控制器上运行。操作系统可以是在计算系统期间管理其他软件和硬件资源的软件。通用操作系统通常在设计时关注用户体验。例如,假设我们正在为手机操作系统开发一个应用程序。用户可能想要流式传输电影,因此我们可以将流式传输体验分为两个工作:工作1

stm32f103用什么做gui(适用于STM32F103C8的)(1)

概述:适用于 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 之间快速跳转,以同时向用户提供下载和查看。

stm32f103用什么做gui(适用于STM32F103C8的)(2)

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

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

第1步:

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

stm32f103用什么做gui(适用于STM32F103C8的)(3)

第2步:

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

stm32f103用什么做gui(适用于STM32F103C8的)(4)

第 3 步:

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

stm32f103用什么做gui(适用于STM32F103C8的)(5)

第4步:

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

准备配件

本教程需要以下硬件。

1. STM32F103C板

2. FTDI

3. LED

4. 跳线

5. 面包板

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

stm32f103用什么做gui(适用于STM32F103C8的)(6)

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

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

下面是部分代码:

static void task1(void * pvParameters) { for (; ; ) { vTaskDelay(1000); digitalWrite(BOARD_LED_PIN HIGH); vTaskDelay(1000); digitalWrite(BOARD_LED_PIN LOW); } } static void task2(void * pvParameters) { for (; ; ) { vTaskDelay(200); digitalWrite(LED_PIN HIGH); vTaskDelay(200); digitalWrite(LED_PIN LOW); } }

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

猜您喜欢: