1.下载FreeRTOS源码
官网:FreeRTOS官网
下载第一个带有示例的
2.在基础工程文件夹(最简单的点灯程序之类的文件夹)中创建文件夹FreeRTOS
3.打开下载好的源码,将FreeRTOSv202212.01\FreeRTOS\Source 里面的两个文件夹和.c文件都复制到FreeRTOS文件夹中
4.打开portable文件夹,只保留以下两个文件夹;RVDS中只保留ARM_CM3文件夹
5.打开源码文件夹,FreeRTOSv202212.01\FreeRTOS\Demo\CORTEX_STM32F103_Keil,复制FreeRTOSConfig.h文件到基础工程的User,同时在FreeRTOSConfig.h中添加两条定义
#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
6.在Keil5工程中创建下图两个文件夹,导入以下文件
heap_4.c 位于 FreeRTOS\portable\MemMang
port.c 位于 FreeRTOS\portable\RVDS\ARM_CM3
7.在Keil5如下位置添加导入头文件的路径
8.打开基础工程的stm32f10x_it.c文件,注释以下两个函数,修改SysTick_Handler函数
代码如下:
void SysTick_Handler(void)
{
#if (INCLUDE_xTaskGetSchedulerState == 1 )
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
{
#endif /* INCLUDE_xTaskGetSchedulerState */
xPortSysTickHandler();
#if (INCLUDE_xTaskGetSchedulerState == 1 )
}
#endif /* INCLUDE_xTaskGetSchedulerState */
}
代码修改完后会有一个警告,这是因为函数的声明问题,在SysTick_Handler函数前面加上就好。
extern void xPortSysTickHandler(void);