200字
RTOS 移植
2023-12-08
2026-03-23

参考RTOS开发指南

03-FreeRTOS移植(课堂总结).pdf

F1与F4、F7、H7移植有细微差别,具体看手册吧。

上面的RTOS开发指南是以正点原子 官方HAL库例程为蓝本,进行RTOS移植,所以移植的具体操作还需要根据实际使用的裸机代码进行变动。或者使用stm32cubemx 直接生成RTOS的基础例程。

移植方面也就没有什么必要详细写出了。

注意:

新版hal例程中delay_init()部分有错误,正常应该使用八分频,但是例程并没有,所以直接替换代码。

void delay_init(uint16_t sysclk)
{
#if SYS_SUPPORT_OS
 uint32_t reload;
#endif
 SysTick->CTRL = 0;
 HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);
 
 g_fac_us = sysclk / 8;
#if SYS_SUPPORT_OS
 reload = sysclk / 8;
 /* 使用 configTICK_RATE_HZ 计算重装载值
 * configTICK_RATE_HZ 在 FreeRTOSConfig.h 中定义
 */

新版正点原子裸机例程简化了对 sys.h的依赖,所以在sys.c中找不到svc_handle和pendSV_handle的函数,所以直接去stm32f1xx_it.c中关闭。

#if (!SYS_SUPPORT_OS)
void SVC_Handler(void)
{
}
#endif

#if (!SYS_SUPPORT_OS)
void PendSV_Handler(void)
{
}
#endif

#if (!SYS_SUPPORT_OS)
void SysTick_Handler(void)
{
 HAL_IncTick();
}
#endif

评论