## RTOS Timebase Source为什么不可以使用滴答定时器呢? 在FreeRTOS中我们的SysTick定时器被用于了我们的始终基准,它用来实现我们的任务切换,我们的SysTick定时器每次触发我们的中断(默认是一毫秒,可以自行修改为其他值) Timebase Source是干嘛的呢? 简单的说,正常裸机开发中我们的SysTick定时器是用来主要是用来进行我们的HAL_Delay()延时的,使用其作为基准,前面我们说了SysTick定时器被用于系统任务切换了,所以它就是一直在工作,或者说一直在触发中断,这样的话我们的HAL_Delay()就需用使用我们的其他定时器(TIM2)进行替代其作用了 系统中断的替换 在FreeRTOSConfig.h中添加#define xPortPendSVHandler PendSV_Handler 在FreeRTOSConfig.h中添加#define xPortSysTickHandler SysTick_Handler 在FreeRTOSConfig.h中添加#define vPortSVCHandler SVC_Handler 第一步:准备一个STM32工程,这里工程越简洁越好 第二步:准备好工程后,创建一个FreeRTOS文件夹 第三步:打开刚才下载好的稳定版本文件,路径:FreeRTOS-LTS\FreeRTOS\FreeRTOS-Kernel将里面内容复制出来 第四步:将内容粘贴到工程中得FreeRTOS文件中 为了简洁好看,我们在创建个source文件夹把这些.c文件放到这里面 现在FreeRTOS源码被我们分成了三个目录,分别是①include目录;②portable目录;③source目录 这里 分析一下 FreeRTOS源码结构,①和③包含的是FreeRTOS核心功能源文件及头文件 .c和.h,这两部分的文件试用于各种编译器和处理器,是通用的,基本不需要修改,②为需要移植修改的目录,这与编译器和所使用的CPU有关,属于RTOS硬件接口层。 ***软件到硬件中间必须有一个桥梁,portable 文件夹里面的东西就是 FreeRTOS*** MemMang 选一个 RVDS 依据编译器,选择 port,保留FreeRTOS/portable/RVDS文件夹中的ARM_CM3文件夹 依据编译器,选择 port FreeRTOS-Kernel/portable/GCC/ARM_CM3/ 缺少 FreeRTOSConfig.h 文件 在demo目录下找到对应内核目录下的demo(可能是其它MCU,不要紧)拷贝一个FreeRTOSConfig.h文件到本地source\FreeRTOS\include目录内