区块链技术博客
www.b2bchain.cn

使用 Clion 移植 RT-Thread 嵌入式操作系统求职学习资料

D0b2wT.gif

本文介绍了使用 Clion 移植 RT-Thread 嵌入式操作系统求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

前言

Clion作为一款跨平台的 C/C++工程IDE,因其强大的功能、优异的人机界面以及丝滑的用户体验广受程序员的喜爱。RT-Thread作为一款国产开源嵌入式操作系统,从2006年发展至今展现了强大的生命力,组件丰富、安全易用、高度可伸缩性以及跨多款芯片平台等,自然受到众多嵌入式工程师的青睐,称之为目前国内第一嵌入式操作系统都不为过。因此,本节详细介绍使用 Clion移植 RT-Thread进行嵌入式开发。

前期准备

1.运行环境windows10;
2.stm32f103x开发板一套;
3.安装好STM32CubeMX;
4.安装好Clion;

其中,需配置Clion满足嵌入式开发要求,如果没有安装可以参考《使用 CLion 进行嵌入式开发》

预期结果

使用 CubeMX配置好工程,移植 RT-Thread操作系统。使用 Clion运行工程,编译、调试,并下载至 STM32F103RC开发板运行,通过串口输出调试信息。

使用CubeMX生成工程

step1: 运行 CubeMX,新建工程并选择芯片 STM32F103RCTx,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step2: 系统时钟配置为外部时钟,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step3: 使能下载调试接口 SWD,如下图,后续需要通过该接口下载程序至单片机。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step4: 使能串口 uart1,如下图所示,串口用于输出调试信息。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step5: 安装 RT-thread软件包(摘录于RTT官方教程) 要获取 RT-Thread Nano软件包,需要在 CubeMX 中添加 RealThread.RT-Thread.pdsc 。

使用 Clion 移植 RT-Thread 嵌入式操作系统

check 通过后,点击 OK 回到 User Defined Packs Manager 界面,再次点击 OK,CubeMX 自动连接服务器,获取包描述文件。回到 Manage embedded software packages 界面,就会发现 RT-Thread Nano 3.1.3 软件包,选择该软件包,点击 Install Now,如下图所示:

使用 Clion 移植 RT-Thread 嵌入式操作系统

点击安装之后,弹出 Licensing Agreement ,同意协议,点击 Finish,如下图所示:

使用 Clion 移植 RT-Thread 嵌入式操作系统

等待安装完成,成功安装后,版本前面的小蓝色框变成填充的黄绿色,现象如下图所示:

使用 Clion 移植 RT-Thread 嵌入式操作系统

至此,RT-Thread Nano 软件包安装完毕,退出 Manage embedded software packages 界面,进入 CubeMX 主界面。

step6: 将 RT-thread添加至工程中,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

其中,RT-Thread Nano 软件包中包含 kernelshell 两个部分,仅选择 kernel 表示只使用 RT-Thread 内核,工程中会添加内核代码;选择 kernelshell 表示在使用 RT-Thread Nano 的基础上使用 FinSH Shell 组件,工程中会添加内核代码与 FinSH 组件的代码,可按需选择。

使用 Clion 移植 RT-Thread 嵌入式操作系统

如下图所示,选中 RT-Thread,其中③处为操作系统的参数设置,我们不做修改,保持默认值。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step7:RT-Thread 操作系统重定义 HardFault_HandlerPendSV_HandlerSysTick_Handler中断函数,为了避免重复定义的问题,在生成工程之前,需要在中断配置中,代码生成的选项中,取消选择三个中断函数(对应注释选项是 Hard fault interrupt, Pendable request, Time base :System tick timer

使用 Clion 移植 RT-Thread 嵌入式操作系统

step8: 配置工程

使用 Clion 移植 RT-Thread 嵌入式操作系统

上图中,①、②分别为工程名字和存储地址,根据自己需要填写。③比较关键,由于后续需要使用clion,因此选择SWSTM32。因下载最新的固件版本需要时间,故这里取消④,点击⑤生产工程。

使用Clion打开工程并修改代码

step1: 使用 clion打开工程,如下图所示,点击①Open or Import,选择工程目录下的后缀名为 .ioc的文件,依次点击③、④。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step2: 将 main.hmain()函数中所有初始化函数挪至 board.c文件的 rt_hw_board_init()函数中,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

更新后,rt_hw_board_init()函数代码如下:

/**  * This function will initial your board.  */ void rt_hw_board_init() {     HAL_Init();  //from main     SystemClock_Config();//from main     /* 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      /* Initialize all configured peripherals */     MX_GPIO_Init();//from main     MX_USART1_UART_Init();//from main }

step3: 同时需将头文件 #include "stm32f1xx_hal.h", 上述挪动的函数及函数体添加至 board.c文件中:

#include "stm32f1xx_hal.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART1_UART_Init(void); void Error_Handler(void);

step4: Clion一般使用 gcc编译器,而不是像 Keil-MDK使用 ARMCC,因此,需要将 startup文件夹下 startup_stm32fxx.s文件中 bl main改成 bl entry该步骤尤为重要

step5: 需要使用 RT-Threadrt_kprintf()打印调试信息至串口 uart1,需重定义函数 rt_hw_console_output(const char *str)如下,并将该函数放在 board.c文件中。

void rt_hw_console_output(const char *str) {     rt_size_t i = 0, size = 0;     char a = 'r';      __HAL_UNLOCK(&huart1);      size = rt_strlen(str);     for (i = 0; i < size; i++)     {         if (*(str + i) == 'n')         {             HAL_UART_Transmit(&huart1, (uint8_t *)&a, 1, 1);         }         HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1);     } }

step6: main()函数中添加头文件 #include <rtthread.h>,并添加串口输出测试代码:

#include <rtthread.h> /**   *  The application entry point.   * int   */ int main(void) {  rt_kprintf("rnbuild RT-Thread on clion by www.rymcu.com!rn");   while (1); }

使用Clion编译工程并查看测试结果

点击 Build-->Rebuild Project完成代码编译,结果如下图②所示成功生成 .hex,.bin可执行文件,表明移植成功。

使用 Clion 移植 RT-Thread 嵌入式操作系统

将上述可执行代码下载至开发板,串口 uart1连接至 PC,通过串口调试助手观察测试结果。串口调试助手设置为:115200--N--8--1

使用 Clion 移植 RT-Thread 嵌入式操作系统

小节

至此,完成了 Clion移植 RT-thread嵌入式操作系统全过程:《github完整工程代码》

前言

Clion作为一款跨平台的 C/C++工程IDE,因其强大的功能、优异的人机界面以及丝滑的用户体验广受程序员的喜爱。RT-Thread作为一款国产开源嵌入式操作系统,从2006年发展至今展现了强大的生命力,组件丰富、安全易用、高度可伸缩性以及跨多款芯片平台等,自然受到众多嵌入式工程师的青睐,称之为目前国内第一嵌入式操作系统都不为过。因此,本节详细介绍使用 Clion移植 RT-Thread进行嵌入式开发。

前期准备

1.运行环境windows10;
2.stm32f103x开发板一套;
3.安装好STM32CubeMX;
4.安装好Clion;

其中,需配置Clion满足嵌入式开发要求,如果没有安装可以参考《使用 CLion 进行嵌入式开发》

预期结果

使用 CubeMX配置好工程,移植 RT-Thread操作系统。使用 Clion运行工程,编译、调试,并下载至 STM32F103RC开发板运行,通过串口输出调试信息。

使用CubeMX生成工程

step1: 运行 CubeMX,新建工程并选择芯片 STM32F103RCTx,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step2: 系统时钟配置为外部时钟,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step3: 使能下载调试接口 SWD,如下图,后续需要通过该接口下载程序至单片机。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step4: 使能串口 uart1,如下图所示,串口用于输出调试信息。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step5: 安装 RT-thread软件包(摘录于RTT官方教程) 要获取 RT-Thread Nano软件包,需要在 CubeMX 中添加 RealThread.RT-Thread.pdsc 。

使用 Clion 移植 RT-Thread 嵌入式操作系统

check 通过后,点击 OK 回到 User Defined Packs Manager 界面,再次点击 OK,CubeMX 自动连接服务器,获取包描述文件。回到 Manage embedded software packages 界面,就会发现 RT-Thread Nano 3.1.3 软件包,选择该软件包,点击 Install Now,如下图所示:

使用 Clion 移植 RT-Thread 嵌入式操作系统

点击安装之后,弹出 Licensing Agreement ,同意协议,点击 Finish,如下图所示:

使用 Clion 移植 RT-Thread 嵌入式操作系统

等待安装完成,成功安装后,版本前面的小蓝色框变成填充的黄绿色,现象如下图所示:

使用 Clion 移植 RT-Thread 嵌入式操作系统

至此,RT-Thread Nano 软件包安装完毕,退出 Manage embedded software packages 界面,进入 CubeMX 主界面。

step6: 将 RT-thread添加至工程中,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

其中,RT-Thread Nano 软件包中包含 kernelshell 两个部分,仅选择 kernel 表示只使用 RT-Thread 内核,工程中会添加内核代码;选择 kernelshell 表示在使用 RT-Thread Nano 的基础上使用 FinSH Shell 组件,工程中会添加内核代码与 FinSH 组件的代码,可按需选择。

使用 Clion 移植 RT-Thread 嵌入式操作系统

如下图所示,选中 RT-Thread,其中③处为操作系统的参数设置,我们不做修改,保持默认值。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step7:RT-Thread 操作系统重定义 HardFault_HandlerPendSV_HandlerSysTick_Handler中断函数,为了避免重复定义的问题,在生成工程之前,需要在中断配置中,代码生成的选项中,取消选择三个中断函数(对应注释选项是 Hard fault interrupt, Pendable request, Time base :System tick timer

使用 Clion 移植 RT-Thread 嵌入式操作系统

step8: 配置工程

使用 Clion 移植 RT-Thread 嵌入式操作系统

上图中,①、②分别为工程名字和存储地址,根据自己需要填写。③比较关键,由于后续需要使用clion,因此选择SWSTM32。因下载最新的固件版本需要时间,故这里取消④,点击⑤生产工程。

使用Clion打开工程并修改代码

step1: 使用 clion打开工程,如下图所示,点击①Open or Import,选择工程目录下的后缀名为 .ioc的文件,依次点击③、④。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step2: 将 main.hmain()函数中所有初始化函数挪至 board.c文件的 rt_hw_board_init()函数中,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

更新后,rt_hw_board_init()函数代码如下:

/**  * This function will initial your board.  */ void rt_hw_board_init() {     HAL_Init();  //from main     SystemClock_Config();//from main     /* 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      /* Initialize all configured peripherals */     MX_GPIO_Init();//from main     MX_USART1_UART_Init();//from main }

step3: 同时需将头文件 #include "stm32f1xx_hal.h", 上述挪动的函数及函数体添加至 board.c文件中:

#include "stm32f1xx_hal.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART1_UART_Init(void); void Error_Handler(void);

step4: Clion一般使用 gcc编译器,而不是像 Keil-MDK使用 ARMCC,因此,需要将 startup文件夹下 startup_stm32fxx.s文件中 bl main改成 bl entry该步骤尤为重要

step5: 需要使用 RT-Threadrt_kprintf()打印调试信息至串口 uart1,需重定义函数 rt_hw_console_output(const char *str)如下,并将该函数放在 board.c文件中。

void rt_hw_console_output(const char *str) {     rt_size_t i = 0, size = 0;     char a = 'r';      __HAL_UNLOCK(&huart1);      size = rt_strlen(str);     for (i = 0; i < size; i++)     {         if (*(str + i) == 'n')         {             HAL_UART_Transmit(&huart1, (uint8_t *)&a, 1, 1);         }         HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1);     } }

step6: main()函数中添加头文件 #include <rtthread.h>,并添加串口输出测试代码:

#include <rtthread.h> /**   *  The application entry point.   * int   */ int main(void) {  rt_kprintf("rnbuild RT-Thread on clion by www.rymcu.com!rn");   while (1); }

使用Clion编译工程并查看测试结果

点击 Build-->Rebuild Project完成代码编译,结果如下图②所示成功生成 .hex,.bin可执行文件,表明移植成功。

使用 Clion 移植 RT-Thread 嵌入式操作系统

将上述可执行代码下载至开发板,串口 uart1连接至 PC,通过串口调试助手观察测试结果。串口调试助手设置为:115200--N--8--1

使用 Clion 移植 RT-Thread 嵌入式操作系统

小节

至此,完成了 Clion移植 RT-thread嵌入式操作系统全过程:《github完整工程代码》

前言

Clion作为一款跨平台的 C/C++工程IDE,因其强大的功能、优异的人机界面以及丝滑的用户体验广受程序员的喜爱。RT-Thread作为一款国产开源嵌入式操作系统,从2006年发展至今展现了强大的生命力,组件丰富、安全易用、高度可伸缩性以及跨多款芯片平台等,自然受到众多嵌入式工程师的青睐,称之为目前国内第一嵌入式操作系统都不为过。因此,本节详细介绍使用 Clion移植 RT-Thread进行嵌入式开发。

前期准备

1.运行环境windows10;
2.stm32f103x开发板一套;
3.安装好STM32CubeMX;
4.安装好Clion;

其中,需配置Clion满足嵌入式开发要求,如果没有安装可以参考《使用 CLion 进行嵌入式开发》

预期结果

使用 CubeMX配置好工程,移植 RT-Thread操作系统。使用 Clion运行工程,编译、调试,并下载至 STM32F103RC开发板运行,通过串口输出调试信息。

使用CubeMX生成工程

step1: 运行 CubeMX,新建工程并选择芯片 STM32F103RCTx,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step2: 系统时钟配置为外部时钟,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step3: 使能下载调试接口 SWD,如下图,后续需要通过该接口下载程序至单片机。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step4: 使能串口 uart1,如下图所示,串口用于输出调试信息。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step5: 安装 RT-thread软件包(摘录于RTT官方教程) 要获取 RT-Thread Nano软件包,需要在 CubeMX 中添加 RealThread.RT-Thread.pdsc 。

使用 Clion 移植 RT-Thread 嵌入式操作系统

check 通过后,点击 OK 回到 User Defined Packs Manager 界面,再次点击 OK,CubeMX 自动连接服务器,获取包描述文件。回到 Manage embedded software packages 界面,就会发现 RT-Thread Nano 3.1.3 软件包,选择该软件包,点击 Install Now,如下图所示:

使用 Clion 移植 RT-Thread 嵌入式操作系统

点击安装之后,弹出 Licensing Agreement ,同意协议,点击 Finish,如下图所示:

使用 Clion 移植 RT-Thread 嵌入式操作系统

等待安装完成,成功安装后,版本前面的小蓝色框变成填充的黄绿色,现象如下图所示:

使用 Clion 移植 RT-Thread 嵌入式操作系统

至此,RT-Thread Nano 软件包安装完毕,退出 Manage embedded software packages 界面,进入 CubeMX 主界面。

step6: 将 RT-thread添加至工程中,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

其中,RT-Thread Nano 软件包中包含 kernelshell 两个部分,仅选择 kernel 表示只使用 RT-Thread 内核,工程中会添加内核代码;选择 kernelshell 表示在使用 RT-Thread Nano 的基础上使用 FinSH Shell 组件,工程中会添加内核代码与 FinSH 组件的代码,可按需选择。

使用 Clion 移植 RT-Thread 嵌入式操作系统

如下图所示,选中 RT-Thread,其中③处为操作系统的参数设置,我们不做修改,保持默认值。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step7:RT-Thread 操作系统重定义 HardFault_HandlerPendSV_HandlerSysTick_Handler中断函数,为了避免重复定义的问题,在生成工程之前,需要在中断配置中,代码生成的选项中,取消选择三个中断函数(对应注释选项是 Hard fault interrupt, Pendable request, Time base :System tick timer

使用 Clion 移植 RT-Thread 嵌入式操作系统

step8: 配置工程

使用 Clion 移植 RT-Thread 嵌入式操作系统

上图中,①、②分别为工程名字和存储地址,根据自己需要填写。③比较关键,由于后续需要使用clion,因此选择SWSTM32。因下载最新的固件版本需要时间,故这里取消④,点击⑤生产工程。

使用Clion打开工程并修改代码

step1: 使用 clion打开工程,如下图所示,点击①Open or Import,选择工程目录下的后缀名为 .ioc的文件,依次点击③、④。

使用 Clion 移植 RT-Thread 嵌入式操作系统

step2: 将 main.hmain()函数中所有初始化函数挪至 board.c文件的 rt_hw_board_init()函数中,如下图。

使用 Clion 移植 RT-Thread 嵌入式操作系统

更新后,rt_hw_board_init()函数代码如下:

/**  * This function will initial your board.  */ void rt_hw_board_init() {     HAL_Init();  //from main     SystemClock_Config();//from main     /* 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      /* Initialize all configured peripherals */     MX_GPIO_Init();//from main     MX_USART1_UART_Init();//from main }

step3: 同时需将头文件 #include "stm32f1xx_hal.h", 上述挪动的函数及函数体添加至 board.c文件中:

#include "stm32f1xx_hal.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART1_UART_Init(void); void Error_Handler(void);

step4: Clion一般使用 gcc编译器,而不是像 Keil-MDK使用 ARMCC,因此,需要将 startup文件夹下 startup_stm32fxx.s文件中 bl main改成 bl entry该步骤尤为重要

step5: 需要使用 RT-Threadrt_kprintf()打印调试信息至串口 uart1,需重定义函数 rt_hw_console_output(const char *str)如下,并将该函数放在 board.c文件中。

void rt_hw_console_output(const char *str) {     rt_size_t i = 0, size = 0;     char a = 'r';      __HAL_UNLOCK(&huart1);      size = rt_strlen(str);     for (i = 0; i < size; i++)     {         if (*(str + i) == 'n')         {             HAL_UART_Transmit(&huart1, (uint8_t *)&a, 1, 1);         }         HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1);     } }

step6: main()函数中添加头文件 #include <rtthread.h>,并添加串口输出测试代码:

#include <rtthread.h> /**   *  The application entry point.   * int   */ int main(void) {  rt_kprintf("rnbuild RT-Thread on clion by www.rymcu.com!rn");   while (1); }

使用Clion编译工程并查看测试结果

点击 Build-->Rebuild Project完成代码编译,结果如下图②所示成功生成 .hex,.bin可执行文件,表明移植成功。

使用 Clion 移植 RT-Thread 嵌入式操作系统

将上述可执行代码下载至开发板,串口 uart1连接至 PC,通过串口调试助手观察测试结果。串口调试助手设置为:115200--N--8--1

使用 Clion 移植 RT-Thread 嵌入式操作系统

小节

至此,完成了 Clion移植 RT-thread嵌入式操作系统全过程:《github完整工程代码》

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 使用 Clion 移植 RT-Thread 嵌入式操作系统求职学习资料
分享到: 更多 (0)
D0b2wT.gif

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们