- 创建一个基础工程(为了方便,可以直接选择官方SDK的Demo里例子)
- 把freertos源码里的Source文件拷贝过来
- 工程新建分组freertos,添加如下文件:
- 3.1Source目录下的所有.c文件
- Source->portable->RVDS->ARM_CM0目录下port.c文件 (根据自己单片机的内核和开发环境来选择)
- Source->portable->MemMang目录下的heap.c文件
添加完后的工程示意图
-
编译和错误修改
- 编译工程,此时会提示错误“找不到头文件..\..\..\FREERTOS\Source\include\FreeRTOS.h(98): error: #5: cannot open source input file "FreeRTOSConfig.h": No such file or directory”,在源码demo目录下的具体工程中就有这个文件,我是从M0内核的例子中拷贝过来的
- 再次编译, PendSV_Handler 、SysTick_Handler 这2个函数重复定义,把interrupts_hc32l13x.c中的相同函数屏蔽掉就可以
- 再次编译,会提示task.c有3个函数为定义,这是因为在FreeRTOSConfig.h启用了钩子函数,将下列宏改为0
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configUSE_MALLOC_FAILED_HOOK 0
#define configCHECK_FOR_STACK_OVERFLOW
(4)可能有些时候会提示FreeRTOSConfig.h中SystemCoreClock未定义,FreeRTOSConfig.h包含下相关头文件就可以
(5)然后在主函数main中加入滴答定时器的初始化和启动函数 SysTick_Config(SystemCoreClock);
(6)再次编译没有错误
5、创建任务函数验证
工程连接:https://download.csdn.net/download/oXiaoXue123456789/13507647