STM32F103移植FreeRTOS操作系统

一、建立必要的stm32开发工程

STM32F103移植FreeRTOS操作系统

1、FreeRTOS文件夹下存放的是整个FreeRTOS系统的文件夹(也可直接从文件所在文件夹直接调用,加头文件时不要弄错就行)。

FreeRTOS的相应资料(source文件夹)网上很多,可以自行下载。(许多开发板买的时候也会送一些资料的)

STM32F103移植FreeRTOS操作系统
2,添加相应文件

STM32F103移植FreeRTOS操作系统

1、list.c queue.c task.c位于source根目录下;

2、Port.c和portmacro.c是硬件接口层,位于FreeRTOS\Source\portable\RVDS\ARM_CM3文件夹下​;

3、heap4.c为内存管理文件,位于FreeRTOS/Source/portable/MemMang​下;

三、添加头文件路径

 1、...\FreeRTOS\Source\portable\RVDS\ARM_CM3

2、…\FreeRTOS\Source\include

3、​…\FreeRTOS\Source

STM32F103移植FreeRTOS操作系统

四、编写FreeRTOSConfig.h文件

从FreeRTOS自带的Demo文件夹下拷贝一份FreeRTOSConfig文件,并将该文件添加到工程中去。

STM32F103移植FreeRTOS操作系统

​此时,如果不是自己编写的代码出错,应该可以全部编译通过。再下载到开发板上,看下现象是不是很预料的一样,如果现象不一样,那我们就要对程序进行Debug,找出错误所在,对其进行修正。

我的程序修改之后运行没有问题,但是下载到板子之后,没有现象出现,所以对其进行Debug找到了错误所在

STM32F103移植FreeRTOS操作系统

通过Debug找到之后,我们进入程序看看哪里有错误(光标处)

STM32F103移植FreeRTOS操作系统

找到之后,退出Debug,知道是这里有错误,可以在网上找下(我是网上找到资料怎么修改)改怎么修改才能正确显示现象

这里有两种方法可以对其进行修改:

第一种:对startup_stm32f10x_hd.s进行修改

STM32F103移植FreeRTOS操作系统

编译之后下载到开发板即可

第二种:在FreeRTOSConfig.h进行定义(在程序的最后面加一些定义)

#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15

#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
//#define xPortSysTickHandler  SysTick_Handler


#endif /* FREERTOS_CONFIG_H */

中间部分为加上去的定义,最后一行被注释掉了,是想提醒自己,如果加上这个定义就会出现重复定义的问题(我另一篇文章上有写)

编译代码,下载到开发板即可