STM32F103移植FreeRTOS操作系统

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

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

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

2,添加相应文件

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

2、Port.c和portmacro.c是硬件接口层,位于FreeRTOSSourceportableRVDSARM_CM3文件夹下;

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

三、添加头文件路径

1、...FreeRTOSSourceportableRVDSARM_CM3

2、…FreeRTOSSourceinclude

3、…FreeRTOSSource

四、编写FreeRTOSConfig.h文件

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

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

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

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

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

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

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

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

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

#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15 #define xPortPendSVHandler PendSV_Handler #define vPortSVCHandler SVC_Handler //#define xPortSysTickHandler SysTick_Handler #endif /* FREERTOS_CONFIG_H */

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

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

经验分享 程序员 微信小程序 职场和发展