做项目前提条件:
1、keil工具,GD32环境已经搭建完成
2、GD32开发板。案例是以梁山派为开发板
3、FreeRTOS源码包。下载地址为: https://github.com/FreeRTOS/FreeRTOS/releases
4、项目参考名字:GD32F470_Template
如果GD32F470不知道搭建,请参考以下连接
我们最终要实现的项目工程目录:
FreeRTOS目录如下
gcc目录下:
F:支持浮点型
1. 拷贝代码到文件夹
2. 添加include path
3. 添加.c
4. 解决编译错误
错误解决
亚马逊云的配置文件,不是我们需要的
找到自己的处理器将freeRTOSConfig拷贝到这个目录中。
报错
删除到只留下这三个文件夹
添加这个文件
创建一个组取名:FreeRTOS_Port
,并添加port.c
文件
再添加heap_4.c
作用是内存管理
complier6
则选GCC
,如果是complier5
选RVDS
本次我们选complier6
因为速度快!
报错
.\Objects\GD32F470.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by port.o and gd32f4xx_it.o).
.\Objects\GD32F470.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by port.o and gd32f4xx_it.o).
.\Objects\GD32F470.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by port.o and gd32f4xx_it.o).
SystemCoreClock找不到,在文件加入:extern uint32_t SystemCoreClock
去gd32f4xx_it.c
里面注释掉三个函数即可,因为用了FreeRTOS操作系统,已经帮忙接管了
以上不是最合理的,如下的解决方案更合理
1、先去配置里面加上:SYS_SUPPORT_OS
,中间用英文逗号隔开
2、在代码中添加#ifndef #endif
和 #ifdef #endif
格式
如下
其他两个都一样写法
再报错
修改宏定义的数字,修改成0
修改
再修改成0
再修改成0
引入头
成功!!!