STM32F4移植FreeRTOS
官方的移植指南,在其记录学习过程
目录
- 一、FreeRTOS的移植
- (1) 去FreeRTOS的官网下载源码包,源码包的版本可以是V9.0.0或更新的版本 (比较稳定
- (2) 把源码包解压到本地,分析源码包中哪些文件需要移植,可以浏览源码包的readme.txt
- (3) 了解了需要移植的文件之后,就可以以标准库的工程模板为基础来移植FreeRTOS源码
- (4) 把FreeRTOS源码包中需要移植的文件拷贝到自己工程中对应的文件夹
- (5) 打开自己的工程,把拷贝过来文件添加到KEIL5工程中,编辑文件夹的结构
- (6) 配置KEIL5工程的头文件的路径,确保编译器可以找到关于FreeRTOS的头文件
- (7) 编译工程,如果编译之后报错,根据错误原因解决错误,直到编译通过为止
- 编译工程是报错,提示找不到FreeRTOSConfig.h头文件,该头文件和FreeRTOS的配置有关,但是移植的源码包中没有该头文件,所以去官网搜索该头文件的资料。
- 再次编译,可以发现提示port.c中有一个变量未定义,原因是该变量没有进行外部声明
- 再次编译,发现有函数出现重复定义的情况,port.c和stm32f4xx_it.c中出现,所以可以选择分别进行分析,可以把stm32f4xx_it.c中重复的函数名称删除即可。
- 再次编译,发现有5个函数未定义,命名规则是有规律的,都是HooK结尾,Hook是钩子函数,其实属于回调函数的一种,注销掉在FreeRTOSConfig.h宏定义
- 还有其他问题就不举例了
- 最好的办法是知道移植的步骤,然后用别人移植好的先学习
一、FreeRTOS的移植
如果想要在项目中利用RTOS对任务进行调度,则需要把RTOS的源码移植到自己的项目中,移植的步骤如下:
(1) 去FreeRTOS的官网下载源码包,源码包的版本可以是V9.0.0或更新的版本 (比较稳定
(2) 把源码包解压到本地,分析源码包中哪些文件需要移植,可以浏览源码包的readme.txt
(3) 了解了需要移植的文件之后,就可以以标准库的工程模板为基础来移植FreeRTOS源码
(4) 把FreeRTOS源码包中需要移植的文件拷贝到自己工程中对应的文件夹
(5) 打开自己的工程,把拷贝过来文件添加到KEIL5工程中,编辑文件夹的结构
(6) 配置KEIL5工程的头文件的路径,确保编译器可以找到关于FreeRTOS的头文件
(7) 编译工程,如果编译之后报错,根据错误原因解决错误,直到编译通过为止
编译工程是报错,提示找不到FreeRTOSConfig.h头文件,该头文件和FreeRTOS的配置有关,但是移植的源码包中没有该头文件,所以去官网搜索该头文件的资料。
再次编译,可以发现提示port.c中有一个变量未定义,原因是该变量没有进行外部声明
提示:__ICCARM__宏定义是和开发工具相关的,该宏定义是IAR软件需要使用的,而目前采用的开发工具是KEIL,KEIL软件需要使用其他的宏定义。
再次编译,发现有函数出现重复定义的情况,port.c和stm32f4xx_it.c中出现,所以可以选择分别进行分析,可以把stm32f4xx_it.c中重复的函数名称删除即可。
再次编译,发现有5个函数未定义,命名规则是有规律的,都是HooK结尾,Hook是钩子函数,其实属于回调函数的一种,注销掉在FreeRTOSConfig.h宏定义
还有其他问题就不举例了
最好的办法是知道移植的步骤,然后用别人移植好的先学习
参考李明轩老师的笔记