一、建立必要的stm32开发工程
1、FreeRTOS文件夹下存放的是整个FreeRTOS系统的文件夹(也可直接从文件所在文件夹直接调用,加头文件时不要弄错就行)。
FreeRTOS的相应资料(source文件夹)网上很多,可以自行下载。(许多开发板买的时候也会送一些资料的)
2,添加相应文件
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
四、编写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 */
中间部分为加上去的定义,最后一行被注释掉了,是想提醒自己,如果加上这个定义就会出现重复定义的问题(我另一篇文章上有写)
编译代码,下载到开发板即可