STM32hal库FreeRTOS移植笔记
- 进入FreeRTOS官网下载FreeRTOS源码,其中LTS指的是长期支持版本

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

- 在FreeRTOS-Kernel中我们需要移植的有
inclue文件夹:包含需要使用到的头文件
portable文件夹:选择Keil文件夹,MemMang其中是内存管理的组件,RVDS文件夹:根据你的MCU核心选择合适文件
还有下列可能要用到的FreeRTOS内核.c文件

下载2022版本的FreeRTOS包,使用其中的demo的FreeRTOSConfig.h文件,这是FreeRTOS的配置文件,可以对其进行裁剪以及配置,我这里使用的是stm32f407get6故选择FreeRTOSv202212.01\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK
在keil中添加对应的头文件路径
修改FreeRTOSConfig.h文件,修改为第二个预编译
![]()
在stm32f4xx_it.c文件中将“PendSV_Handler”,“SVC_Handler”,“SysTick_Handler”这三个函数注释掉并在cubemx将下面三个配置删除
![]()
在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 中,这些预编译指令用于配置内核的特定功能。以下是每个指令的含义:
configUSE_IDLE_HOOK:- 这个配置项用于启用或禁用空闲任务钩子函数。如果设置为
1,可以定义一个空闲任务钩子函数vApplicationIdleHook(),在系统处于空闲状态时调用。
- 这个配置项用于启用或禁用空闲任务钩子函数。如果设置为
configUSE_TICK_HOOK:- 这个选项用于启用或禁用滴答(tick)钩子函数。如果设置为
1,可以定义一个滴答钩子函数vApplicationTickHook(),在每次系统滴答时调用。
- 这个选项用于启用或禁用滴答(tick)钩子函数。如果设置为
configCHECK_FOR_STACK_OVERFLOW:- 此选项用于启用或禁用堆栈溢出检查。如果设置为
1,FreeRTOS 会在上下文切换时检查每个任务的堆栈大小,以防止堆栈溢出。
- 此选项用于启用或禁用堆栈溢出检查。如果设置为
configUSE_MALLOC_FAILED_HOOK:- 这个配置项用于启用或禁用内存分配失败钩子函数。如果设置为
1,可以定义一个钩子函数vApplicationMallocFailedHook(),当内存分配失败(例如,调用pvPortMalloc()时没有足够内存)时会调用该函数。
- 这个配置项用于启用或禁用内存分配失败钩子函数。如果设置为
将这些选项设置为
0表示禁用相应的功能,从而减少系统的开销和复杂性。值得注意的是,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博客
【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍_freertos时钟使用systick还是timer-CSDN博客
STM32hal库FreeRTOS移植笔记的更多相关文章
- 基于IAR平台FreeRTOS移植
开始这篇文章之前先简单说明一下,我使用的MCU是我们公司自主研发的ACH1180芯片,和STM32差不多,都是Cortex-M4的核,所以移植的过程参考了STM32移植的步骤. 1.解压FreeRT ...
- tslib移植笔记(1)【转】
本文转载自:https://blog.csdn.net/zijie_xiao/article/details/50740950 tslib移植笔记(1)2016-04-25 tslib背景[摘自百度] ...
- STemWin5.22移植笔记【转】
来自:http://www.openedv.com/posts/list/27697.htm STemWin5.22移植笔记 网上关于emwin的资料很少,我在移植的时候查了很多资料,对我一个感觉是好 ...
- 解决嵌入式linux系统下iconv库的移植问题
一.解决问题 在arm开发板上使用framebuff,在汉字显示时,因为只有gb2312的16*16的汉字字库,而ubuntu16.04默认 的编码方式时utf-8,因此需要进行转码(ut ...
- 手把手图文并茂教你用Android Studio编译FFmpeg库并移植
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331 之前曾写过一篇&l ...
- C++标准库第二版笔记 3 和异常的理解 1
C++标准库第二版笔记 3 和异常的理解 1 差错和异常(error and exception)的处理 标准异常类(exception class) 定义于 分为: 1.语言本身支持的异常 2.标准 ...
- C++标准库第二版笔记 2.1
C++标准库第二版笔记 2.1 1 Range-Based for 循环 for ( decl : coll ) { statements; } // collaborate 类似C# foreach ...
- nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植
参考资料:https://blog.csdn.net/u010860832/article/details/86235993 这里把移植经验记录下来,供有需要的同学参考,有不对的地方也请大家批评指正. ...
- C++标准库第二版笔记 2
C++标准库第二版笔记 2 微小但重要的语法提升 template表达式内的空格: vector< list<int> >; // OK in each C++ version ...
- C++标准库第二版笔记 1
C++标准库第二版笔记 1 C++ std历史 第一份标准化文档: C++98 & C++03 & TR1 TR1 Information Technology- Programmin ...
随机推荐
- WIN10桌面图标间距变得很大怎么办?
转载来源: 作者:填鸭式教育受益者链接:https://www.zhihu.com/question/328872597/answer/1862986629来源:知乎 1.按Win+R打开运行,输入r ...
- Vue(六)——条件渲染
Vue--条件渲染 v-if.v-else-if.v-else v-if 指令用于条件性地渲染一块内容,表达式的值为 true --渲染. false--不渲染 v-if.v-else-if.v-el ...
- codeup之数组元素原地逆置
Description 将一个长度为10的整型数组中的值按逆序重新存放. 如:原来的顺序为1,2,3,4,5,6,7,8,9,0,要求改为0,9,8,7,6,5,4,3,2,1 Input 从键盘上输 ...
- JQuery元素滚动定位及获取元素的scrollTop,clientHeight,scrollHeight
scrollHeight为滚动DIV的实际总体高度,获取方式为:$(obj)[0].scrollHeight clientHeight为滚动DIV的可见高度,获取方式为:$(obj)[0].clien ...
- deepseek-r1的1.5b、7b、8b、14b、32b、70b和671b有啥区别?
DeepSeek-R1系列提供了多种参数规模的模型(1.5B.7B.8B.14B.32B.70B 和 671B),它们在模型架构.性能表现.资源需求和适用场景上有显著差异.以下是对这些版本的核心区别总 ...
- 【2020.11.25提高组模拟】树的解构(deconstruct) 题解
[2020.11.25提高组模拟]树的解构(deconstruct) 题解 题目描述 给一棵以\(1\)为根的外向树,进行\((n-1)\)次删边操作,每次都会从没有删掉的边中等概率地删掉一条边\(a ...
- Java中的静态块(static{})
静态块(static{}) (1) static关键字还有一个比较关键的作用,用来形成静态代码块(static{} 即static块 )以优化程序性能. (2) static块可以置于类中的任何地方, ...
- FPGA使用两个HC595驱动8位数码管
FPGA使用两个HC595驱动8位数码管 本文章给出使用FPGA3根线来驱动8位数码管的示例代码,输入为disp_data,共7*8=56位,输出输入如图所示. 硬件方面参数 该程序只能控制数码管的7 ...
- 「Log」2023.8.21 小记
序幕 七点到校,管理整理博客. 然后开始写博客,SAM 的. 学长开始讲题,2-SAT,还算好理解,写完博客过了下板子题. \(\color{royalblue}{P4782\ [模板]2-SAT 问 ...
- window10本地搭建DeepSeek R1(三) 'NoneType' object has no attribute 'encode'
上面两章介绍了在本地安装DeepSeek+OpenWebUI.这里介绍一下几个需要注意的地方. 1:文件上传失败,上传文件是报错:python "'NoneType' object has ...

