EIDE + STM32cubeMX RT-Thread nano 移植教程MDK版+GCC版
0. 声明
本系列文章禁止搬运/转载至CSDN, 禁止基于内容衍生的任何收费行为!!! 请各位遵守开源免费之精神.
stm32cubeMX工程创建

RTOS是基于 systick 做系统心跳, 为了避免存在debug时的灵异现象,最好给这边换一个timebase


RT-thread nano 选择

RT-thread nano 配置

外设初始化



工程生成小技巧






EIDE工程导入MDK 版





EIDE工程导入GCC 版
接下来开始GCC工程移植教程;
1.同样重新导入一个新的MDK文件工程


可能存在的报错:
若 你使用的是 arm-gcc v10.3 ; 可能会有报错:
error: unknown type name 'clock_t'
这个时候你可以打开time.h 并添加以下代码:
(比较建议的方式是升级你的默认gcc编译器版本)实测13 和14版都能正常编译,以下为升级指南教程:
https://www.cnblogs.com/waterguy/p/18905749
#if defined(__GNUC__)
typedef long long time_t;
typedef long suseconds_t;
#endif/* arm-none-eabi-gcc */




临门一脚的补充(FinSH组件)
到上面一步后, 你会发现FinSH 组件无法正常使用, 这是因为.ld 文件还得加点料
在大概第91行的位置加入如下代码:

/*RT-thread GCC Add start*/
/* section information for finsh shell */
. = ALIGN(4);
__fsymtab_start = .;
KEEP(*(FSymTab))
__fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
. = ALIGN(4);
/* section information for initial. */
. = ALIGN(4);
__rt_init_start = .;
KEEP(*(SORT(.rti_fn*)))
__rt_init_end = .;
. = ALIGN(4);
/* RT-thread GCC Add end */
重新编译再下载(记得把while循环打印的代码注释掉, 否则串口会一直打印用不了FinSH)
下载后你就可以正常使用FinSH了
输入help命令可以查看支持什么命令:


浙公网安备 33010602011771号