
1、基础工程建立 首先通过STM32CubeMX建立基础工程,首先开启RCC并将时钟配置到72M主频: ![]() ![]() 配置串口1用于调试打印: ![]() 在配置个LED灯的IO: ![]() 将HAL用到的系统滴答定时器切换成定时器7,因为SysTick定时器我们要给rtthread使用: ![]() 中断分组设置为4: ![]() 取消掉这三个函数的生成,因为rtthread已经把这三个函数生成好了: ![]() 最后输出工程: ![]() ![]() 2、移植rtthread-nano 从rtthread官网下载解压rtthread-nano源码并解压,我们移植需要以下文件: ![]() 将上图文件拷贝到工程目录,如下图所示: ![]() 需要将rtthread添加进工程的文件有: libcpu\arm\cortex-m3\cpuport.c libcpu\arm\cortex-m3\context_rvds.S src目录下的所有文件 board.c 如下图所示: ![]() 然后添加头文件包含: ![]() 尝试初次编译,直接编译通过: ![]() 接下来还需要修改一下源码,适配HAL库。 首先检查一下rtconfig.h配置文件的各项,在keil中打开可以切换为图像化配置,基本默认配置即可: ![]() 然后适配时钟,打开board.c文件,找到rt_hw_board_init函数,改为以下: ![]() 接着在main.c文件中写一个外设初始化的函数chip_init,将CUBE生成的外设初始化函数中该函数内,用rtthread初始化列表的形式进行外设初始化: ![]() 然后重定向rt_kprintf函数到串口1: ![]()
main函数中创建一个LED灯的任务: ![]() 最后编译运行就可以了: ![]() 3、添加finsh组件 将finsh源码和头文件包含加入工程: ![]() ![]() 在rtconfig.h中添加宏定义: #define RT_USING_FINSH ![]() 将mian函数中的打印屏蔽掉,要不然不方便finsh的使用: ![]() 然后编译下载运行: ![]() 注意xshell的设置,rtthread是用\n作为回车换行,而xshell默认为\r\n才是回车换行,所以xshell需要这么设置才能正常显示rtthread的打印: ![]() ———————————————— 版权转载自:雍正不秃头 |