1. 进入FreeRTOS官网下载FreeRTOS源码,其中LTS指的是长期支持版本

  1. 在文件夹中解压并打开,其中FreeRTOS-Kernel是FreeRTO核心组件

  1. 在FreeRTOS-Kernel中我们需要移植的有
  • inclue文件夹:包含需要使用到的头文件

  • portable文件夹:选择Keil文件夹,MemMang其中是内存管理的组件,RVDS文件夹:根据你的MCU核心选择合适文件

  • 还有下列可能要用到的FreeRTOS内核.c文件

  1. 下载2022版本的FreeRTOS包,使用其中的demo的FreeRTOSConfig.h文件,这是FreeRTOS的配置文件,可以对其进行裁剪以及配置,我这里使用的是stm32f407get6故选择FreeRTOSv202212.01\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK

  2. 在keil中添加对应的头文件路径

  3. 修改FreeRTOSConfig.h文件,修改为第二个预编译

  4. 在stm32f4xx_it.c文件中将“PendSV_Handler”,“SVC_Handler”,“SysTick_Handler”这三个函数注释掉并在cubemx将下面三个配置删除

  5. 在FreeRTOSConfig.h文件中将下面的组件注释掉

    • #define configUSE_IDLE_HOOK 0
    • #define configUSE_TICK_HOOK 0
    • #define configCHECK_FOR_STACK_OVERFLOW 0
    • #define configUSE_MALLOC_FAILED_HOOK 0

    在 FreeRTOS 中,这些预编译指令用于配置内核的特定功能。以下是每个指令的含义:

    1. configUSE_IDLE_HOOK:

      • 这个配置项用于启用或禁用空闲任务钩子函数。如果设置为 1,可以定义一个空闲任务钩子函数 vApplicationIdleHook(),在系统处于空闲状态时调用。
    2. configUSE_TICK_HOOK:

      • 这个选项用于启用或禁用滴答(tick)钩子函数。如果设置为 1,可以定义一个滴答钩子函数 vApplicationTickHook(),在每次系统滴答时调用。
    3. configCHECK_FOR_STACK_OVERFLOW:

      • 此选项用于启用或禁用堆栈溢出检查。如果设置为 1,FreeRTOS 会在上下文切换时检查每个任务的堆栈大小,以防止堆栈溢出。
    4. configUSE_MALLOC_FAILED_HOOK:

      • 这个配置项用于启用或禁用内存分配失败钩子函数。如果设置为 1,可以定义一个钩子函数 vApplicationMallocFailedHook(),当内存分配失败(例如,调用 pvPortMalloc() 时没有足够内存)时会调用该函数。

    将这些选项设置为 0 表示禁用相应的功能,从而减少系统的开销和复杂性。

  6. 值得注意的是,freertos默认的时基单元是系统时钟即systick,所以在使用cubemx时,hal的系统时钟需要使用其他定时器,不能使用systick定时器

    参考链接

    FreeRTOS移植教程(超详细)——基于GD32F303X系列MCU - - 21ic电子技术开发论坛

    [STM32]从零开始的STM32 FreeRTOS移植教程_stm32使用rtos-CSDN博客

    STM32用CUBEMx生成工程, 不使用CMSIS, 自己移植freertos

    cubemx在使用freertos的时候为何推荐使用除systick以外的timebase_cubemx提示freertos不用systick时基-CSDN博客

    基于STM32H7的FreeRTOS+ FatFS + emWin + ST USB的综合模板下载(已经发布2021-01-21) - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!

    移植FreeRTOS过程中SysTick_Handler()重定义相关的一个问题 - FreeRTOS & Zephyr & RTEMS & Contiki - 硬汉嵌入式论坛 - Powered by Discuz!

    【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍_freertos时钟使用systick还是timer-CSDN博客

STM32hal库FreeRTOS移植笔记的更多相关文章

  1. 基于IAR平台FreeRTOS移植

     开始这篇文章之前先简单说明一下,我使用的MCU是我们公司自主研发的ACH1180芯片,和STM32差不多,都是Cortex-M4的核,所以移植的过程参考了STM32移植的步骤. 1.解压FreeRT ...

  2. tslib移植笔记(1)【转】

    本文转载自:https://blog.csdn.net/zijie_xiao/article/details/50740950 tslib移植笔记(1)2016-04-25 tslib背景[摘自百度] ...

  3. STemWin5.22移植笔记【转】

    来自:http://www.openedv.com/posts/list/27697.htm STemWin5.22移植笔记 网上关于emwin的资料很少,我在移植的时候查了很多资料,对我一个感觉是好 ...

  4. 解决嵌入式linux系统下iconv库的移植问题

    一.解决问题    在arm开发板上使用framebuff,在汉字显示时,因为只有gb2312的16*16的汉字字库,而ubuntu16.04默认    的编码方式时utf-8,因此需要进行转码(ut ...

  5. 手把手图文并茂教你用Android Studio编译FFmpeg库并移植

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331 之前曾写过一篇&l ...

  6. C++标准库第二版笔记 3 和异常的理解 1

    C++标准库第二版笔记 3 和异常的理解 1 差错和异常(error and exception)的处理 标准异常类(exception class) 定义于 分为: 1.语言本身支持的异常 2.标准 ...

  7. C++标准库第二版笔记 2.1

    C++标准库第二版笔记 2.1 1 Range-Based for 循环 for ( decl : coll ) { statements; } // collaborate 类似C# foreach ...

  8. nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

    参考资料:https://blog.csdn.net/u010860832/article/details/86235993 这里把移植经验记录下来,供有需要的同学参考,有不对的地方也请大家批评指正. ...

  9. C++标准库第二版笔记 2

    C++标准库第二版笔记 2 微小但重要的语法提升 template表达式内的空格: vector< list<int> >; // OK in each C++ version ...

  10. C++标准库第二版笔记 1

    C++标准库第二版笔记 1 C++ std历史 第一份标准化文档: C++98 & C++03 & TR1 TR1 Information Technology- Programmin ...

随机推荐

  1. 安卓智能手机芯片上audio的bringup

    基于安卓平台的智能手机芯片回来后要做bringup.首先是负责平台的把安卓OS起来,然后就轮到各功能模块做bringup了,Audio是其中主要功能模块之一.Audio由于场景多和牵涉到的core多, ...

  2. Java中的位运算符、移位运算符

    目录 1 概述 2 位运算符 2.1 $(与) 2.2 |(或) 2.3 ^(异或) 2.4 ~(非) 3 移位运算 3.1 左移运算符:<< 3.2 右移运算符:>> 3.3 ...

  3. 实现高质量视频通话的javascript技巧与方法

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  4. 计算机组成原理 L03 计算单元(ALU)复习-1

    计算机组成原理 L03 计算单元(ALU)复习-1 进位传输函数和进位产生函数 类推得到 gi 与操作得到 0000 0000 0010 0011 pi 或操作得到 1111 1111 1111 10 ...

  5. 洛谷题解:P12364 [蓝桥杯 2022 省 Python B] 寻找整数

    注:可以在两分钟内跑出. 看到这题,暴力枚举跑不出来.如果你有没有充分的数学知识,那又怎么办呢? 减少枚举量 首先,注意到许多余数都是 \(11\),有图为证: 设这个数为 \(n\),则有: \[n ...

  6. Java catch多重异常捕获

    摘要:Java中多重异常捕获机制可以更加简洁.有效地处理多个异常,提高了程序的鲁棒性,是编写高质量代码的重要技巧之一.   小编在<浅谈Java异常处理机制>中梳理了异常处理机制,在< ...

  7. MyBatis常见面试题:通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

      MyBatis常见面试题:通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?   Dao接口即Mapper接 ...

  8. MySQL SQL语句书写顺序和执行顺序

    目录 SQL语句书写顺序和执行顺序 MySql执行顺序理解 实例 知识扩展 on和where的区别 limit 分页 结束语 Reference SQL语句书写顺序和执行顺序 (7) SELECT ( ...

  9. SecureCRT 8.5 配置自动记录日志

    两种方式记录日志 1.手动记录日志 文件--会话日志 选择需要保存的位置和文件名 2.全局自动记录所有日志 选项--全局选项 常规--默认会话--编辑默认设置 类别--终端--日志文件 配置日志文件名 ...

  10. FastAPI安全机制:从OAuth2到JWT的魔法通关秘籍

    title: FastAPI安全机制:从OAuth2到JWT的魔法通关秘籍 date: 2025/06/07 08:40:35 updated: 2025/06/07 08:40:35 author: ...