目录
- 简述:
- 第一步:准备最简工程与系统
- 第二步:拷贝源码
- 第三步:编译器IAR配置
- 第四步:工程代码修改
- 第五步:编译工程
简述:
1、主芯片:GD32F205VET6
2、编译器:IAR V8.40.1
3、系统:FreeRTOS V9.0
第一步:准备最简工程与系统
1、准备一个GD32F205VET6最简单的IAR工程;
2、准备FreeRTOS V9.0 源码,下载链接;
第二步:拷贝源码
1、将FreeRTOS V9.0 源码全部拷贝到最简工程;
![在这里插入图片描述](https://img-blog.csdnimg.cn/56000fe3242240c998c19d6a7fb34687.png)
2、删除不必要的文件
删除“portable”文件夹中多余文件,留下“IAR”、"MemMang”
![在这里插入图片描述](https://img-blog.csdnimg.cn/ae004ae399ef4c6c9bf95ef7425f5278.png)
第三步:编译器IAR配置
1、添加编译器工程目录和文件;
![在这里插入图片描述](https://img-blog.csdnimg.cn/1b19b27a068a4b46a7c608bf7b718c96.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU3RheVN0b25l,size_10,color_FFFFFF,t_70,g_se,x_16)
2、添加头文件路径
![在这里插入图片描述](https://img-blog.csdnimg.cn/1566142ecfa94c79bbcaf09da774bcb0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU3RheVN0b25l,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b201d82c4cb34fbc8ea0e71758705e6b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU3RheVN0b25l,size_20,color_FFFFFF,t_70,g_se,x_16)
3、配置仿真器;
![在这里插入图片描述](https://img-blog.csdnimg.cn/b12c90c8189940939ad2336042aee436.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU3RheVN0b25l,size_20,color_FFFFFF,t_70,g_se,x_16)
第四步:工程代码修改
1、拷贝FreeRTOS系统源码中“Demo”中的“CORTEX_STM32F103_IAR”中的“FreeRTOSConfig.h”文件拷贝到自己的工程中的“FreeRTOS”文件中的“include”中;
![在这里插入图片描述](https://img-blog.csdnimg.cn/39c633e80e454d768c24446fcda9b9a6.png)
2、添加系统宏定义
在“FreeRTOSConfig.h”文件添加系统宏定义
![在这里插入图片描述](https://img-blog.csdnimg.cn/da8f2fbfe3db4a2a95fa64c76e78367a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU3RheVN0b25l,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/556e399780234c6fbbb75ff57ed26502.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU3RheVN0b25l,size_17,color_FFFFFF,t_70,g_se,x_16)
都知道大家喜欢源码,就把需要添加的贴出来吧:
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
#include <stdint.h>
extern uint32_t SystemCoreClock;
#endif
#define configCPU_CLOCK_HZ ( SystemCoreClock )
#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
3、注释重复定义函数;
把“gd32f20x_it.c”文件中的“SVC_Handler”、“PendSV_Handler”函数注释掉
![在这里插入图片描述](https://img-blog.csdnimg.cn/aa65a90855654b1887df863039a4a159.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU3RheVN0b25l,size_10,color_FFFFFF,t_70,g_se,x_16)
4、添加系统滴答时钟函数;
在“gd32f20x_it.c”文件中的“SysTick_Handler”函数中添加FreeRTOS系统滴答时钟函数“xPortSysTickHandler”
![在这里插入图片描述](https://img-blog.csdnimg.cn/1970913ae83f45cfb3d8b88a5d48b9f2.png)
5、在main函数创建task
![在这里插入图片描述](https://img-blog.csdnimg.cn/f8e11835eb5e44149a1954a9f1035076.png)
第五步:编译工程
1、编译工程并下载调试;
![在这里插入图片描述](https://img-blog.csdnimg.cn/9b9a433b581c4d07a6d6a8ab87ebfa04.png)
参考:
1、正点原子《STM32F1 FreeRTOS开发手册_V1.1.pdf》
2、网友总结
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)