一.CubeMX移植
具体过程参考官方文档:基于CubeMX移植RT-Thread Nano
1.Nano pack 安装
要获取 RT-Thread Nano 软件包,需要在 CubeMX 中添加 https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc 。
2.创建基础工程
3.系统时钟配置
/* board.c */
void rt_hw_board_init()
{
HAL_Init();
SystemClock_Config();
/* System Clock Update */
SystemCoreClockUpdate();
/* System Tick Configuration */
_SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
/* Call components board initial (use INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
rt_components_board_init();
#endif
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#endif
}
二.编写简单程序
创建两个简单线程:
//任务线程
struct rt_thread led_thread;
//任务栈
rt_uint8_t rt_led_thread_stack[128];
//任务函数
void led_task_entry(void *parameter);
void MX_RT_Thread_Init(void)
{
rt_thread_init(&led_thread,"led",led_task_entry,RT_NULL,&rt_led_thread_stack[0],sizeof(rt_led_thread_stack),3,20);
//开启线程调度
rt_thread_startup(&led_thread);
}
//LED任务
void led_task_entry(void *parameter)
{
//1000ms闪烁一次
while(1)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
rt_thread_delay(1000);
}
}
MX_RT_Thread_Init();
while (1)
{
//500ms一次
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_14);
rt_thread_mdelay(500);
}
效果
参考
基于CubeMX移植RT-Thread Nano
https://blog.csdn.net/qq_47281915/article/details/121877234