【STM32笔记】STM32_HAL库与FreeRTOS(一)—移植FreeRTOS源码
一. FreeRTOS简述
FreeRTOS 是一个开源的(Free)实时操作系统(RTOS – Real Time Operating System)内核,在 2003 年由 Richard Barry 发布,现已成为全球最流行的 RTOS 之一。FreeRTOS 被广泛应用于各种嵌入式设备中,包括物联网(IoT)设备、工业控制器、消费电子产品、汽车电子等。
1. 主要特点
二. 获取FreeRTOS源码
下载FreeRTOS源码的官网地址链接: FreeRTOS源码下载
这里选择下载 FreeRTOS 202212.01 数据包。下载好后打开文件,
FreeRTOS 文件包含了FreeRTOS实时内核源码(这也是后续要移植的FreeRTOS源码)。
FreeRTOS-Plus 文件是实现了 FreeRTOS 内核的附加功能。与 FreeRTOS 核心库不同,FreeRTOS-Plus 库对 FreeRTOS RTOS 内核具有依赖性。
三. 使用STM32CubeMX生成工程
打开STM32CubeMX,选择STM32103C8芯片,设置基本配置。这里我将PA08与PA15引脚口设置为推挽输出模式,同时开启USART1串口外设功能。
注意:这里修改一下修改HAL库的时基源。将FreeRTOS占用的时基源与HAL库占用的时基源错开。
生成工程(以下简称keil工程文件)。
四. 移植FreeRTOS
1. 打开生成的keil工程文件,在该工程的主目录下新建名为FreeRTOS文件夹,然后在FreeRTOS文件夹中创建include、port、src文件夹。
2. 打开下载的FreeRTOSv202212.01源码文件夹,将FreeRTOSv202212.01\FreeRTOS\Source\include文件中的所有文件copy到keil工程文件的FreeRTOS\include文件中。
3. 打开下载的FreeRTOSv202212.01源码文件夹,将FreeRTOSv202212.01\FreeRTOS\Source\portable文件中的MemMang文件与RVDS文件copy到keil工程文件的FreeRTOS\port文件中。
4. 打开下载的FreeRTOSv202212.01源码文件夹,将FreeRTOSv202212.01\FreeRTOS\Source文件下中所有.c文件copy到keil工程文件的FreeRTOS\src文件中。
5. 打开下载的FreeRTOSv202212.01源码文件夹,将FreeRTOSv202212.01\FreeRTOS\Demo文件中查找到你创建工程所选芯片的demo例程,并将该例程文件下的FreeRTOSConfig.h,copy到keil工程文件的FreeRTOS\include文件中。
(这里我是使用的STM32F103系列芯片,因此我选择CORTEX_STM32F103_Keil例程移植)
提示:如果第5步不知道该如何选择Demo,可查看FreeRTOS官方文档说明链接:支持的演示 与链接:支持的设备 如下图对应Demo中文件名查看选择。
6. 打开创建的Keil工程,先编译一下,编译成功后在该工程设备树添加文件。
关于MemMang文件(内存分配实现示例)中的heap_1.c~heap_5.c文件选择谁(只能选一个),各自又有什么作用,在FreeRTOS官方文档说明也有说明链接:FreeRTOS 堆内存管理。
关于RVDS文件选择哪一个port.c文件,则去查看你所使用的芯片系列是ARM Cortex-M?内核。
7. 添加了.c文件对应的也需要添加.h文件。
8. 在stm32f1xx_it.c文件中添加代码。
extern void vPortSVCHandler( void );
extern void xPortPendSVHandler( void );
extern void xPortSysTickHandler( void );
到此FreeRTOS源码的移植就基本完成了,开始编译。
下一节来对FreeRTOS的移植进行验证。
作者:Macy~