准备工具
- CubeMX(需要java环境)
- Vscode(在里面安装LoTlink插件,也就是华为的lietos插件)
- Jlink(版本新一点比较好)
建立CubeMX工程
新建一个裸机工程
点击这个选项,如果没有安装RTThread软件包,先点击Manage那个安装,
具体怎么安装看这个RTThread官方文档链接
选择RTThread软件包,两个选项,一个内核,一个shell,只勾选内核,就是Nano版本。
然后配置其他工程选项
首先是接管NVIC中断
去掉这三个中断处理函数
接着常规配置其他的选项
注意:如果选用了shell,就要开启一个串口,具体实现可以看官方给的文档
最后生成cubeMX工程
VsCode搭建工程环境
先点击左下角的home(没有就去安装LoT link插件)
选择导入GCC工程
选择CubeMX生成的工程根目录
导入Makefile文件
选择硬件型号(也可以进入工程以后再更改)
修改这个汇编文件的后缀,把S改成s(我已经修改好了)
(因为 .S 和 .s 的含义不一样,具体原因自己百度)
紧接着配置Makefile文件
添加这个汇编文件到编译命令当中
# ASM sources
ASM_SOURCES = \
startup_stm32f411xe.s \
Middlewares/Third_Party/RealThread_RTOS_RT-Thread/libcpu/arm/cortex-m4/context_gcc.s
再配置这个部分
# float-abi
#FLOAT-ABI = -mfloat-abi=hard
FLOAT-ABI = -mfloat-abi=soft
剩下的事情就很简单了
为Rtthread初始化滴答定时器,直接调用这两个函数:
void HAL_Init(void);
void SystemClock_Config(void);
void HAL_Init(void);
void SystemClock_Config(void);
/**
* This function will initial your board.
*/
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
}
修改启动文件
因为是GCC环境下,所以要这样配置:
紧接着到main里面,把系统时钟初始化去掉,随便写个电灯,就可以了。
这样一个工程就配置好啦。