1.下载FreeRTOS源码
官网:FreeRTOS官网
下载第一个带有示例的
![](https://img-blog.csdnimg.cn/86ddfaeec87b40e58595a2ed130acea0.png)
2.在基础工程文件中创建文件夹FreeRTOS
3.打开下载好的源码,将FreeRTOSv202212.01\FreeRTOS\Source 里面的两个文件夹和.c文件都复制到FreeRTOS文件夹中
![](https://img-blog.csdnimg.cn/a258b430769e4c20b3030016763a3cf8.png)
4.打开portable文件夹,只保留以下两个文件夹;RVDS中只保留ARM_CM3文件夹
![](https://img-blog.csdnimg.cn/9b0b584385f843ed8c13ba15cc931266.png)
![](https://img-blog.csdnimg.cn/aab9fe300e924f08b0e188a20b0dd26d.png)
5.打开源码,FreeRTOSv202212.01\FreeRTOS\Demo\CORTEX_STM32F103_Keil,复制FreeRTOSConfig.h文件到基础工程的User,同时在FreeRTOSConfig.h中添加两条定义
![](https://img-blog.csdnimg.cn/b975ed4228b2465b8abb0cdaf2293019.png)
![](https://img-blog.csdnimg.cn/88f887ce677e4e44ad108b8afeff3343.png)
#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
6.在Keil5工程中创建下图两个文件夹,导入以下文件
heap_4.c 位于 FreeRTOS\portable\MemMang
port.c 位于 FreeRTOS\portable\RVDS\ARM_CM3
![](https://img-blog.csdnimg.cn/fa4db454aef242b591b80620b48249a1.png)
7.在Keil5如下位置添加导入头文件的路径
![](https://img-blog.csdnimg.cn/1c8042e1cee44e0d91a2d41e4d615ca8.png)
![](https://img-blog.csdnimg.cn/57dfac2859bd42d7abe6bf1802ae61b8.png)
8.打开基础工程的stm32f10x_it.c文件,注释以下两个函数,修改SysTick_Handler函数
![](https://img-blog.csdnimg.cn/7c54652e78fb45659d77d26e9fb6c381.png)
![](https://img-blog.csdnimg.cn/a1ce3e9935424dd389591934a5d1fb94.png)
代码如下:
void SysTick_Handler(void)
{
#if (INCLUDE_xTaskGetSchedulerState == 1 )
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
{
#endif /* INCLUDE_xTaskGetSchedulerState */
xPortSysTickHandler();
#if (INCLUDE_xTaskGetSchedulerState == 1 )
}
#endif /* INCLUDE_xTaskGetSchedulerState */
}
9.移植完成