FreeRTOSv202212.01移植到STM32

发布网友 发布时间:55分钟前

我来回答

1个回答

热心网友 时间:7分钟前

介绍

将FreeRTOSv202212.01移植到STM32F103C8T6单片机的过程概述。此版本为当前最新,适用于开发者进行系统级编程。

硬件平台

选用STM32F103C8T6作为移植目标,此型号单片机提供丰富的外设资源,适合各种嵌入式应用。

软件架构与操作步骤

1. 从freertos.org/zh-cn-cmn下载源代码。注意,V9.0以后版本由Amazon收购后开发,V9.0被认为较为稳定。本文档介绍的移植方法适用于最新版本,与旧版本相比,源代码变化不大,可进行对比学习。

2. 解压源码并复制FreeRTOS目录内容至项目目录下。删除除Source文件夹外的所有文件,Source文件夹是核心模块,包含实际移植所需的文件。

3. 进入Source文件夹,删除非源代码文件,保留include和portable目录,前者包括头文件,后者为接口文件。

4. 进入Source下的portable文件夹,删除非必要的文件和文件夹(如RVDS和MemMang),仅保留与M3内核相关的ARM_CM3接口文件以及heap_4.c,其余可保留但暂不使用。

5. 从FreeRTOSv202212.01\FreeRTOS\Demo\CORTEX_STM32F103_Keil复制FreeRTOSConfig.h至include文件夹。此配置文件用于系统裁剪。

6. 将保留的文件添加到工程中,并配置文件路径。确保编译无错误。

创建任务的详细步骤

在main.c文件中,创建任务。关注stm32f10x_it.h文件,增加xPortSysTickHandler外部声明,并注释掉SVC_Handler和PendSV_Handler。SysTick_Handler作为定时器回调函数,用于调度处理。

在FreeRTOSConfig.h中添加中断宏定义,由port.c中的汇编语言实现,用于任务启动和切换。设置INCLUDE_xTaskGetSchedulerState为1。

在main.h中加入RTOS头文件,包含操作系统所需的所有调用文件。

至此,重新编译即可运行程序。最后,确保工程总目录包含标准库stdlib(3.5.0版本),以支持完整的硬件抽象层。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com