参考RTOS开发指南
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