当前位置: 首页 > article >正文

FreeRTOS实战——一、基于HAL库项目的FreeRTOS移植步骤

FreeRTOS实战——一、基于HAL库项目的移植步骤


文章目录

  • FreeRTOS实战——一、基于HAL库项目的移植步骤
  • 前言
  • 一、下载和移植FreeRTOS
  • 二、系统文件配置
    • 2.1 FreeRTOSConfig.h中添加如下3个配置:
    • 2.2 修改stm32f1xx_it.c


前言

废话不多说,在FreeRTOS基础:核心概念与入门指南中我们学习了FreeRTOS的概念,Github目录结构,如何创建一个新的项目。但是如何进行实际电脑操作呢,这里我们一起学习如何一步步配置,放心,以下流程在本机电脑上编译通过,0错误


一、下载和移植FreeRTOS

下载链接:FreeRTOS Github

  1. 学到了FreeRTOS,相信大家已经有了点灯的项目文件。我们在根目录下创建文件夹FreeRTOS,里面创建两个文件夹为portablesource
    在这里插入图片描述
    在这里插入图片描述

  2. 复制FreeRTOS的Source文件夹的7个.c文件到你的source文件夹下
    在这里插入图片描述

  3. 复制FreeRTOS源码portable文件夹下的Keil、RVDS、MemMang到你的portable文件夹下
    在这里插入图片描述

  4. 其中RVDS文件夹下保留对应你的开发芯片内核,复制FreeRTOS源码include文件夹到你的FreeRTOS文件夹下
    在这里插入图片描述

  5. 复制源码目录..\FreeRTOS\Demo\CORTEX_STM32F103_Keil中的FreeRTOSConfig.h到你喜欢的位置,我的是Core\Inc
    在这里插入图片描述

  6. 将FreeRTOS/Source和FreeRTOS/Portable添加到工程中
    在这里插入图片描述

  7. Source添加你的FreeRTOS中source的.c文件
    在这里插入图片描述

  8. Portable添加portable/MemMang中的heap_4.c和RVDS最里面的port.c文件

在这里插入图片描述

  1. 添加FreeRTOSConfig.h头文件
    在这里插入图片描述
  2. 添加以下两个目录,指定头文件目录
    在这里插入图片描述
    在这里插入图片描述

二、系统文件配置

2.1 FreeRTOSConfig.h中添加如下3个配置:

#define xPortPendSVHandler  PendSV_Handler
#define vPortSVCHandler     SVC_Handler
#define INCLUDE_xTaskGetSchedulerState   1

2.2 修改stm32f1xx_it.c

  1. 引入头文件
    #include “FreeRTOS.h”
    #include “task.h”
  2. 注释两个函数
    SVC_HandlerPendSV_Handler
  3. 添加SysTick函数
    申明extern void xPortSysTickHandler(void);
    SysTick_Handler中添加
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) 
{
    xPortSysTickHandler();
}

完成
在这里插入图片描述


http://www.kler.cn/a/456154.html

相关文章:

  • 基于 DINOv2 模型实现图搜图相似度检索任务
  • @Scheduled注解的使用-SpringBoot-Springtask
  • DirectUI属性表
  • vue2 elementui if导致的rules判断失效
  • Linux应用软件编程-多任务处理(进程)
  • 修改 ssh 默认访问端口
  • [江科大编程技巧] 第1期 定时器实现非阻塞式程序 按键控制LED闪烁模式——笔记
  • SQL 实战:复杂数据去重与唯一值提取
  • Android——自定义按钮button
  • Python学生管理系统(MySQL)
  • default、delete 和 explicit
  • Spark生态圈
  • 在FreeBSD或Ubuntu平台仿真RISCV64位版本FreeBSD系统相关技术文档
  • 基于Spring Boot + Vue3实现的在线商品竞拍管理系统源码+文档
  • 记录命令行操作树莓派Wifi的方式
  • FAISS进行高效的向量检索 原理详解
  • MyBatis中XML文件的模板
  • Vite系列课程 | 11. Vite 配置文件中 CSS 配置(Modules 模块化篇)
  • xadmin后台首页增加一个导入数据按钮
  • CA系统的设计(CA证书生成,吊销,数字签名生成)
  • 关于Qt::BlockingQueuedConnection的死锁问题
  • Fastbot-iOS(iOS monkey)schema参数的指定方式
  • 【工具变量】地级市减碳重视程度及减碳词频数据(2003-2024年)
  • Mybatis-Plus updateById 方法更新无效及空值处理
  • 【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
  • mprpc框架代码详解