stm32译指rtthread
时间: 2023-07-29 20:13:01 浏览: 58
RT-Thread是一个开源的实时操作系统,支持多种平台和多种编译器。在STM32平台上,RT-Thread可以运行并提供实时任务调度和多线程支持。在STM32上使用RT-Thread时,通常会在main函数中调用rtthread_startup()函数作为统一的入口点,开始执行RT-Thread的任务调度和线程管理。\[2\]
RT-Thread的线程调度是通过上下文切换来实现的。上下文切换是通过rt_hw_context_switch_interrupt函数来完成的。这个函数会将当前线程的栈指针保存到rt_interrupt_from_thread中,并将要切换到的线程的栈指针保存到rt_interrupt_to_thread中。同时,将rt_thread_switch_interrupt_flag设置为1,表示需要进行上下文切换。然后,通过触发PendSV异常来触发上下文切换。\[3\]
在上下文切换中,为什么只保存了要切换到的线程的栈指针而没有保存当前线程的栈指针呢?这是因为在上下文切换时,当前线程的栈指针已经保存在当前线程的线程控制块中,不需要额外保存。而要切换到的线程的栈指针需要保存在rt_interrupt_to_thread中,以便在切换完成后能够正确恢复该线程的执行。\[3\]
#### 引用[.reference_title]
- *1* *3* [RT-Thread内核学习记录](https://blog.csdn.net/qq_36439722/article/details/125629548)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [RTthread学习笔记————第3章 内核基础](https://blog.csdn.net/Kk_01110001B/article/details/83718608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]