RT-Thread studio使用(持续更新)

这篇具有很好参考价值的文章主要介绍了RT-Thread studio使用(持续更新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


  • 官方的RT-Thread Studio的用户手册:(界面介绍,编译下载调试、导入工程等官方文档说明)
    RT-Thread Studio 用户手册

============================================================

1、RT-Thread studio下载安装

1-1、官网下载安装包:

RT-Thread 官方下载中心
文档中心关于nano版本讲了移植的几种方式,打开使用RT-Thread_Studio移植,选择安装RT-Thread_Studio跳转到官网,拉到最底下,点击RT-Thread nano,
RT-Thread studio使用(持续更新)
RT-Thread studio使用(持续更新)
RT-Thread studio使用(持续更新)
选择下载即可;

1-2、安装:

RT-Thread studio使用(持续更新)
勾选协议:
RT-Thread studio使用(持续更新)
选择自己想要安装的位置:
RT-Thread studio使用(持续更新)
RT-Thread studio使用(持续更新)
开始安装
RT-Thread studio使用(持续更新)
v2.2.4版本安装提示重命名某个文件失败,。。。。。,下个v2.2.3版本试下:(v2.2.3版本还是一样的报错)
RT-Thread studio使用(持续更新)
解决:最后发现是安装路径的问题。。。安装在默认的D盘根目录下就成功安装了,真是很无语!(这个现象在我自己的电脑上安装是自定义的路径,但是没有出现这个错误,不知道什么原因,解决了就好)

1-3、注册登录:

注册好登录,即可开始使用啦;
RT-Thread studio使用(持续更新)

2、新建RT-Thread nano工程

2-1、新建nano工程

2-1-1、打开 文件—>新建—>RT-Thread Nano项目:
RT-Thread studio使用(持续更新)
2-2-2、新建项目配置项:
1>、设置工程名字
2>、工程保存路径
3>、基于芯片创建、nano版本选择
4>、芯片选择
5>、串口控制台与引脚配置
6>、调试配置
全部配置完成之后自动生成了nano项目代码;
注:
1、我选择先在stm32f103c8t6上面先跑,所以第4和5项配置要根据实际情况配置
2、配置时钟,默认是用内部的HSI时钟,后续自己在文件drv_clk.c中修改;
RT-Thread studio使用(持续更新)
stm32f103c8t6的串口1当调试串口:
RT-Thread studio使用(持续更新)
2-1-3、生成工程之后如下,选择了小锤子debug后,编译0 error,0 warning;

RT-Thread studio使用(持续更新)

2-2、连接硬件,下载到板子上测试(选择的是stm32f103c8t6)

2-2-1、下载到stm32f103c8t6最小系统板上
RT-Thread studio使用(持续更新)
竟然弹出窗口然后一直下载中
问题解决:嗐,这台电脑第一次用j-link ob,没装驱动,装了驱动之后,下载正常;
关于j-link的问题解决查看博客:j-link使用(持续更新)
RT-Thread studio使用(持续更新)
2-2-2、打开RT-Thread studio中的串口终端,可以看到代码中实现的输出到串口的内容;
生成的代码main函数中定时打印字符串到串口,由于在配置工程时候配置了控制台串口的串口号和引脚号,在工程中自动实现了串口的驱动和rt_hw_console_output(),默认可以进行打印;
RT-Thread studio使用(持续更新)

3、用RT-Thread studio创建的nano工程的文件解读

待更新

4、基于RT-Thread nano添加Finsh(实现命令输入)

4-1、什么是Finsh

RT-Thread FinSH 是 RT-Thread 的命令行组件(shell),提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。它可以使用串口 / 以太网 / USB 等与 PC 机进行通信;

4-2、基于Nano添加FinSH(用RT-Thread studio)

4-2-1、双击 RT-Thread Settings 进入配置,打开组件,勾选 FinSH Shell,保存配置。此操作将把 FinSH 组件的源码加入工程中。其中,rt_hw_console_getchar() 已经在 drv_uart.c 中实现,无需再实现对接 FinSH 的代码。

如下打开组件之后,就可用FinSH功能了
RT-Thread studio使用(持续更新)
4-1-2、链接硬件,重新编译下载时候,在RT-Thread studio软件中的终端中按下tab键,可查看系统中的命令:

正常情况下是可以实现了命令行输入,但是出现了tab键之后没有反应现象:
RT-Thread studio使用(持续更新)
问题解决:
不屏蔽上图中的 rt_thread_mdelay(1000);(应该是程序陷入了死循环,现在对RT-Thread不熟悉,后续回头解答原因)

RT-Thread studio使用(持续更新)

5、【问题】怎么用RT-Thread studio打开已经创建好的RT-Thread项目工程;

问题描述:
RT-Thread studio使用(持续更新)
问题解决:
RT-Thread studio【问题】怎么用RT-Thread studio打开已经创建好的RT-Thread项目工程;

6、【问题】怎么查找打开指定内容

1、搜索:
RT-Thread studio使用(持续更新)
2、打开元素:
RT-Thread studio使用(持续更新)

7、【问题】项目工程怎么添加自己的路径和源文件头文件(SConscript和SConstruct)(未完善)

见自己博客

8、 RT-Thread工程新建工程之后,用cubemx重新配置参数(时钟,串口等)

参考博文链接:
RT-Thread Studio与CubeMX联合编程(超级详细)

8-1、cubemx配置:

打开工程中的插件(要先安装好stm32cubemx这个软件)进行配置,软件的安装和配置见下面的博文链接:
RT-Thread studio使用(持续更新)

stm32cubeMX使用

配置好之后关闭cubemx这个软件,然后进入RT-Thread studio之后弹出这个窗口,提示
生成了stm32f1xx_hal_conf.h原来的文件重命名,调用cubemx生成的这个文件,点确定即可;
RT-Thread studio使用(持续更新)
RT-Thread studio使用(持续更新)

8-2、用cubemx生成工程后需要关闭软件;

8-2-1、在RT-Thread studio软件中打开cubemx插件配置工程之后,必须要关闭掉cubemx软件,这样在RT-Thread studio软件上才能正常操作
RT-Thread studio使用(持续更新)

8-3、用cubemx重新配置之后生成的文件分析:

RT-Thread studio使用(持续更新)
如上图,cubemx生成了文件夹cubemx下面包含头文件和源文件,尤其是也有一个main.c,那到底用哪一个main.c执行我们的用户代码呢?

先继续下一步吧,先执行编译;

8-4、编译后报错解决

直接编译后报21个错误。。。
RT-Thread studio使用(持续更新)
解决的步骤:

8-4-1、需要用SConscript文件告诉编译器cubemx生成的需要编译

在cubumx文件夹下有生成SConscript文件,要是没有自己创建一个,自己生成的SConscript文件已经实现了生成文件的路径包含了
RT-Thread studio使用(持续更新)

import os   #引入os模块
from building import *    #导入building的所有模块

cwd = GetCurrentDir()	#获取获取当前路径,并保存至变量cwd
src  = Glob('*.c')	#获取当前目录下的所有 C 文件,并保存至src变量

# add cubemx drivers 
#由于RT-Thread工程中存在部分相同函数文件,所以对src重新赋值
#文件中的stm32g4xx_it.c 、 system_stm32g4xx.c不加入构建
#其余文件按相同格式填写到下述括号内

src = Split('''
Src/stm32f1xx_hal_msp.c
Src/main.c
''')

path = [cwd]    #创建路径列表,并保存至path中
path += [cwd + '/Inc']	

group = DefineGroup('cubemx', src, depend = [''], CPPPATH = path)  #这是 RT-Thread 基于 SCons 扩展的一个方法(函数)。

Return('group')

8-4-2、右键SConscript更新软件包

更新软件包!非常重要!别漏了
RT-Thread studio使用(持续更新)

8-5、weak掉cubemx生成的main函数,然后在applications下调用cubemx生成的函数:

8-5-1、weak掉cubemx生成的main函数:

网上有说手动_weak掉cubemx生成的main函数,但是我这版本自动生成好了;
RT-Thread studio使用(持续更新)

8-5-2、将hal生成初始化函数在application的main下调用

将hal生成初始化函数在application的main下调用,如下,在applications下的main.c中去调用cubemx生成的hal函数:(这里我用cubemx配置的外设很少,所有只有一个main。h头文件)
RT-Thread studio使用(持续更新)
然后重新编译;

8-6【问题】做了SConscript脚本和weak cubemx生成的main函数,还是编译错误

现象:

16:22:09 **** Incremental Build of configuration Debug for project test2 ****
make -j4 all 
arm-none-eabi-gcc "../drivers/drv_usart.c"
../drivers/drv_usart.c:28:8: error: unknown type name 'UART_HandleTypeDef'
 static UART_HandleTypeDef handle;
        ^
../drivers/drv_usart.c:380:30: error: unknown type name 'UART_HandleTypeDef'
 __WEAK void HAL_UART_MspInit(UART_HandleTypeDef *huart)
                              ^
../drivers/drv_usart.c: In function 'stm32_configure':
../drivers/drv_usart.c:393:11: error: request for member 'Instance' in something not a structure or union
     handle.Instance          = config->Instance;
           ^
../drivers/drv_usart.c:394:11: error: request for member 'Init' in something not a structure or union
     handle.Init.BaudRate     = 115200;
           ^
../drivers/drv_usart.c:395:11: error: request for member 'Init' in something not a structure or union
     handle.Init.HwFlowCtl    = UART_HWCONTROL_NONE;
           ^
../drivers/drv_usart.c:395:32: error: 'UART_HWCONTROL_NONE' undeclared (first use in this function)
     handle.Init.HwFlowCtl    = UART_HWCONTROL_NONE;
                                ^
../drivers/drv_usart.c:395:32: note: each undeclared identifier is reported only once for each function it appears in
../drivers/drv_usart.c:396:11: error: request for member 'Init' in something not a structure or union
     handle.Init.Mode         = UART_MODE_TX_RX;
           ^
../drivers/drv_usart.c:396:32: error: 'UART_MODE_TX_RX' undeclared (first use in this function)
     handle.Init.Mode         = UART_MODE_TX_RX;
                                ^
../drivers/drv_usart.c:397:11: error: request for member 'Init' in something not a structure or union
     handle.Init.OverSampling = UART_OVERSAMPLING_16;
           ^
../drivers/drv_usart.c:397:32: error: 'UART_OVERSAMPLING_16' undeclared (first use in this function)
     handle.Init.OverSampling = UART_OVERSAMPLING_16;
                                ^
../drivers/drv_usart.c:398:11: error: request for member 'Init' in something not a structure or union
     handle.Init.WordLength   = UART_WORDLENGTH_8B;
           ^
../drivers/drv_usart.c:398:32: error: 'UART_WORDLENGTH_8B' undeclared (first use in this function)
     handle.Init.WordLength   = UART_WORDLENGTH_8B;
                                ^
../drivers/drv_usart.c:399:11: error: request for member 'Init' in something not a structure or union
     handle.Init.StopBits     = UART_STOPBITS_1;
           ^
../drivers/drv_usart.c:399:32: error: 'UART_STOPBITS_1' undeclared (first use in this function)
     handle.Init.StopBits     = UART_STOPBITS_1;
                                ^
../drivers/drv_usart.c:400:11: error: request for member 'Init' in something not a structure or union
     handle.Init.Parity       = UART_PARITY_NONE;
           ^
../drivers/drv_usart.c:400:32: error: 'UART_PARITY_NONE' undeclared (first use in this function)
     handle.Init.Parity       = UART_PARITY_NONE;
                                ^
../drivers/drv_usart.c:402:9: warning: implicit declaration of function 'HAL_UART_Init' [-Wimplicit-function-declaration]
     if (HAL_UART_Init(&handle) != HAL_OK)
         ^
../drivers/drv_usart.c: In function 'rt_hw_console_output':
../drivers/drv_usart.c:429:13: warning: implicit declaration of function 'HAL_UART_Transmit' [-Wimplicit-function-declaration]
             HAL_UART_Transmit(&handle, (uint8_t *)&a, 1, 1);
             ^
../drivers/drv_usart.c: In function 'rt_hw_console_getchar':
../drivers/drv_usart.c:440:9: warning: implicit declaration of function '__HAL_UART_GET_FLAG' [-Wimplicit-function-declaration]
     if (__HAL_UART_GET_FLAG(&handle, UART_FLAG_RXNE) != RESET)
         ^
../drivers/drv_usart.c:440:38: error: 'UART_FLAG_RXNE' undeclared (first use in this function)
     if (__HAL_UART_GET_FLAG(&handle, UART_FLAG_RXNE) != RESET)
                                      ^
../drivers/drv_usart.c:447:20: error: request for member 'Instance' in something not a structure or union
         ch = handle.Instance->DR & 0xff;
                    ^
../drivers/drv_usart.c:452:41: error: 'UART_FLAG_ORE' undeclared (first use in this function)
         if(__HAL_UART_GET_FLAG(&handle, UART_FLAG_ORE) != RESET)
                                         ^
../drivers/drv_usart.c:454:13: warning: implicit declaration of function '__HAL_UART_CLEAR_OREFLAG' [-Wimplicit-function-declaration]
             __HAL_UART_CLEAR_OREFLAG(&handle);
             ^
../drivers/drv_usart.c: At top level:
../drivers/drv_usart.c:251:17: warning: 'stm32_gpio_configure' defined but not used [-Wunused-function]
 static rt_err_t stm32_gpio_configure(struct stm32_uart_config *config)
                 ^
make: *** [drivers/subdir.mk:27: drivers/drv_usart.o] Error 1
"make -j4 all" terminated with exit code 2. Build might be incomplete.

16:22:10 Build Failed. 20 errors, 5 warnings. (took 1s.459ms)

问题解决:其实是在cubemx配置的时候我没有配置到用作RT-Thread studio终端用的usart1导致的问题,具体操作如下博文:

【rtt问题】RT-Thread studio用cubemx配置后提示串口错误:error: unknown type name ‘UART_HandleTypeDef‘

9、【rtt问题】RT-Thread studio新建项目编译成功,j-link下载失败

【rtt问题】RT-Thread studio新建项目编译成功,j-link下载失败文章来源地址https://www.toymoban.com/news/detail-416921.html

到了这里,关于RT-Thread studio使用(持续更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用rt-thread Studio下载固件时出现Unable to enter Isp mode

    根据 我发现我缺了图中的文件夹  解决方法: 在rt-thread studio的sdk管理包中下载  

    2024年02月16日
    浏览(35)
  • 使用RT-Thread studio IDE开发stm32F407(实现adc多通道采集)

    注意:使用这个IDE配置工程特别简单( only   10  minutes ) step1:选择对应的芯片或开发板创建RT-Thread项目   step2:配置RT-Thread Settings(按我的步骤顺序进行) 由于要用到ADC,所以我们使能这个框架,直接把它选上就ok 是不是特别简单?接下来第三步,要难一点了 step3 注意: 这

    2024年02月09日
    浏览(32)
  • RT-Thread Studio学习(十四)ADC

    本文将基于STM32F407VET芯片介绍如何在RT-Thread Studio开发环境下使用ADC设备。硬件及开发环境如下: OS WIN10 STM32F407VET6 STM32CubeMX v6.10.0 STM32Cube MCU Package for STM32F4 Series v1.28.0 RT-Thread Studio v2.2.7 RT-Thread Source Code v5.0.2 STM32F4 chip support packages v0.2.3 打开RT-Thread Studio软件新建基于芯片的项

    2024年01月19日
    浏览(32)
  • RT-Thread Studio配置LAN8720+LWIP+TCP服务器实现

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 由于项目上需要使用RT-Thread建立TCP服务器实现与客户端的数据交互,查阅了不少资料以及踩了不少坑,这里记录和分享一下实现的过程,希望能帮助到有需要的同学,您的支持是我创作的最大动力,谢谢

    2024年01月25日
    浏览(30)
  • RT-Thread入门笔记2-动态内存堆的使用

    栈(stack): 由编译器自动分配释放 堆(heap) : 一般由程序员分配和释放 PS:一个ARM程序包含3部分:RO,RW和ZI RO是程序中的指令和常量 RW是程序中的已初始化变量 ZI是程序中的未初始化的变量 void *rt_malloc(rt_size_t nbytes):rt_malloc函数会从系统堆空间中找到合适大小的内存块.

    2024年02月02日
    浏览(22)
  • RT-Thread 1. GD32移植RT-Thread Nano

    1. RT-Thread Nano 下载 RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实

    2024年02月05日
    浏览(36)
  • RT-Thread 9. VS2012下仿真RT-Thread 和LVGL

    1. 在ENV中添加组件 2. 下载组件 3. 生成代码 4. 打开代码 双击project.vcxproj 编译 5. 运行

    2024年02月06日
    浏览(50)
  • 【STM32&RT-Thread零基础入门】 2. 新建RT-Thread项目

    硬件:STM32F103ZET6、ST-LINK、usb转串口工具 RT-Thread的全称是Real Time Thread,顾名思义,它是一个嵌入式实时多线程操作系统。相较于 Linux 操作系统,RT-Thread 体积小,成本低,功耗低、启动快速,除此之外 RT-Thread 还具有实时性高、占用资源小等特点,非常适用于各种资源受限(

    2024年02月13日
    浏览(33)
  • RT-Thread使用PWM实现灯亮度调节——STM32F407

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 RT-Thread使用PWM实现灯亮度调节——STM32F407ZG 作为新入门的嵌入式选手,最近在学习RT-Thread操作系统,鉴于自己健忘的记性,打算记录下来后面好回顾学习。 今天要总结的是RT-Thread使用PWM实现灯亮度调节

    2024年02月15日
    浏览(32)
  • 【STM32&RT-Thread零基础入门】 3. PIN设备(GPIO)的使用

    硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 在嵌入式系统中,GPIO是最常用的一种设备,在RT-Thread操作系统中,把GPIO命名为PIN设备。 RT-Thread通过PIN设备对芯片的GPIO引脚进行管理,应用程序可以通过其提供的一组PIN设备

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包