使用RT-Thread Studio搭配STM32CubeMX新建RT-Thread项目

news2024/10/5 21:21:25

STM32CubeMX下载
RT-Thread Studio下载

安装好RT-Thread Studio后,先打开RT-Thread SDK管理器确认有没有自己MCU需要的SDK包,直接安装好之后里面是有STM32F1系列的SDK包,其他的需要自己安装。
在这里插入图片描述
之后点击文件→新建→RT-Thread项目,根据自己需要配置好后点击完成就会生成RT-Thread项目。
在这里插入图片描述
新建项目后点击构建,这时候应该是不会报错的,直接下载进板子里就会打印出RT-Thread的信息。在这里插入图片描述
如果没有打印出信息,这个时候调试可能会发现进入rt_hw_hard_fault_exception()函数的while(1)循环中。在这里插入图片描述在这里插入图片描述
如果出现这种错误,可以试一下使用STM32F1系列的创建一个RT-Thread项目,应该是可以直接跑的。那么就没必要去研究为什么出现这种错误,直接更换SDK包,重新试一下,如果还是不行的话就更换一下RT-Thread Studio的版本,我本来用的是2.2.6版本的,后来换成2.2.5版本的就没有问题,新建的项目可以直接跑。

这样项目就建好了,之后可以通过STM32CubeMX来配置自己的工程,配置好之后在Project Manager界面设置不要生成main函数,因为新建的RT-Thread项目里面已经有main函数了。
在这里插入图片描述
在Code Generator界面不要勾选为每个外设单独生成.c和.h文件,因为通过STM32CubeMX生成的工程在RT-Thread项目中实际使用的只有stm32l4xx_hal_msp.c和stm32l4xx_hal_conf.h文件。conf.h文件用来使能外设模块,msp.c包含管脚和时钟初始化等,这样的话所有外设的设置都在一个msp.c里面,方便管理。
在这里插入图片描述
之后就可以生成代码了,生成之后界面如下:
在这里插入图片描述
STM32CubeMX生成的代码main.c中只使用了SystemClock_Config()函数来配置时钟,这个函数会在drv_clk.c里面clk_init()函数中调用。

void clk_init(char *clk_source, int source_freq, int target_freq)
{
    /*
     * Use SystemClock_Config generated from STM32CubeMX for clock init
     * system_clock_config(target_freq);
     */
    extern void SystemClock_Config(void);
    SystemClock_Config();
}

这个时候cubemx目录里面是没有SConscript文件的,这是一个脚本文件。
在这里插入图片描述
如果RT-Thread Studio版本是2.2.6的话,直接在STM32CubeMX里面什么都不改重新再生成一遍代码更新软件包就有了;如果RT-Thread Studio版本是2.2.5的话,重新生成代码还是没有的话就把RT-Thread Studio软件重启一下就有了;或者也可以自己创建一个。

import os
from building import *

cwd = GetCurrentDir()
src  = Glob('*.c')
# add cubemx drivers
src = Split('''
Src/stm32l4xx_hal_msp.c
Src/main.c
''')

path = [cwd]
path += [cwd + '/Inc']

group = DefineGroup('cubemx', src, depend = [''], CPPPATH = path)

Return('group')

如果在调试的时候外设寄存器里面是空的,那么就是SVD文件的路径有问题,打开调试配置(Ctrl+F5),在SVD Path下选择正确的路径。路径位置在RT-Thread Studio安装路径下:RT-ThreadStudio\repo\Extract\Chip_Support_Packages\RealThread\STM32L4\0.1.9\debug\svd。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 实现 matlab 的 zp2tf 函数

文章目录1. matlab 的 zp2tf 函数的作用2. matlab 的 zp2tf 函数的使用方法3. C实现3.1 complex.h 文件3.2 zp2tf.h 文件4. 测试结果4.1 测试文件4.2 测试结果1. matlab 的 zp2tf 函数的作用 作用是将极点形式的 H(s) 函数的分母展开 2. matlab 的 zp2tf 函数的使用方法 [z,…

ICASSP2023 | 基于多任务学习的保留背景音的语音转换

在影视、有声书内容中,背景音是一种表现丰富的艺术形式。语音转换(Voice Conversion)如能将源说话人语音转换成目标说话人语音的同时,保留源语音中的背景音,将会提供更沉浸的语音转换体验。之前的语音转换研究主要关注…

低代码平台很赞,用2个小时,搭出1套应用

最近低代码很火,到处都是低代码的尝试贴,笔者今天也决定深入体验一下,感受它的便捷程度。 在案例开始之前,我们先来聊聊概念。 一、低代码 低代码实质上并不是一个新颖的话题,也不是最近才有的技术突破和创新&#xf…

Python--异常处理机制

Python异常处理机制 1、什么是异常处理: 程序运行时常会碰到一些错误,例如除数为 0、年龄为负数、数组下标越界等,这些错误如果不能发现并加以处理,很可能会导致程序崩溃。 可以简单的理解异常处理机制,就是在程序运…

Nginx生产环境配置、elasticsearch生产环境配置、rocketmq生产环境配置 (史上最全)

Nginx实现10万并发 在优化内核时,可以做的事情很多,不过,我们通常会根据业务特点来进行调整,当Nginx作为静态web内容服务器、反向代理或者提供压缩服务器的服务器时,期内核参数的调整都是不同的, 概述&am…

计算机组成原理——第五章中央处理器

半生风雨半生伤,半醉半醒半心凉 文章目录前言5.1 CPU的功能和基本结构5.2 指令周期的数据流5.3.1 单总线结构5.3.2 专用通路结构前言 之前我们就说过CPU主要包括两个部分,运算器和控制器,运算器主要是实现算数运算.逻辑运算, 运算…

React 搜索时遇到的坑

一、业务场景: 最近在优化React的天枢项目里面,搜索时遇到了一些问题。为了大家后面遇到和我一样的问题,给大家分享一下 二、问题描述: 1.点击搜索按钮,报以下错误。 TypeError: Converting circular structure to J…

全景丨0基础学习VR全景制作,平台篇:如何从素材库发布VR漫游

大家好欢迎观看蛙色平台使用教程 大家可以将创建作品理解成搭建房子,建房子需要基础的砖块、木头、钉子等原材料,房子成品是多种原材料的有机组合,而蛙色VR平台在创建作品前,也需要先准备对应的基础原材料。当前蛙色VR素材上传类型…

C++实现前缀树

文章目录1. 什么是前缀树2. 前缀树的实现2.1 前缀树的基本结构2.2 插入2.3 word出现了几次2.3 word作为前缀出现几次2.4 删除1. 什么是前缀树 假设这里有一个字符串数组,和一个树的根结点: 这个结点的pass意思是:有几个字符通过了这个结点。…

Golang中是否可以无限开辟协程以及如何控制协程的数量?

文章目录1. Golang中是否可以无限开辟协程?2. 不控制goroutine数量引发的问题3. 如何控制goroutine的数量?⭐️3.1 只用有buffer的channel3.2 channel与sync同步组合方式3.3 利用无缓冲channel与任务发送/执行分离方式1. Golang中是否可以无限开辟协程&a…

腾讯轻联中多维表记录id是什么?如何获取记录id?

在腾讯文档智能表、金山轻维表、维格表需要去【更新表格数据】的时候,经常会需要输入记录id(英文record id),很多用户也会有疑问,什么是记录id,如何获取记录id等。 金山、维格表、腾讯文档的记录ID是什么&a…

字节跳动CVPR 2023论文精选来啦(内含一批图像生成新研究)

计算机视觉领域三大顶会之一的 CVPR 今年已经开奖啦。 今年的 CVPR 将于六月在加拿大温哥华举办,和往年一样,字节跳动技术团队的同学们收获了不少中选论文,覆盖文本生成图像、语义分割、目标检测、自监督学习等多个领域,其中不少…

[ROC-RK3568-PC] [Firefly-Android] 10min带你了解Camera的使用

🍇 博主主页: 【Systemcall小酒屋】🍇 博主追寻:热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是林群院士说过的一句话,另外“成就是最好的老师”,技术…

SVN利用 AS 进行代码对比的方法

第 1 种:如果我们是从 SVN 检出的项目,并且想比较本地代码与从 SVN 检出时的代码相比都有那些区别,可以按如下步骤操作 如上图所示,在代码编辑区,右键唤出功能菜单,然后选择Subversion,进而会展…

沉浸式翻译 – 支持 PDF、EPUB、网页,可同时显示原文与译文的双语翻译工具

使用的理由 自从谷歌翻译不再对大陆用户提供服务后。内心是一阵酸痛的,毕竟我认识单词单词不认识我啊,这简直是天书一般的存在。 期间网络中的很多大神也是推荐了不少方法让我再次拥抱谷歌翻译,比如教我修改 host 文件什么的,但这…

谁能真正替代你?AI辅助编码工具深度对比(chatGPT/Copilot/Cursor/New Bing)

写在开头 这几个月AI相关新闻的火爆程度大家都已经看见了,作为一个被裹挟在AI时代浪潮中的程序员,在这几个月里我也是异常兴奋和焦虑。甚至都兴奋的不想拖更了。不仅仅兴奋于AI对于我们生产力的全面提升,也焦虑于Copilot等AI辅助编码工具&am…

VUE3 学习笔记(八-1)中 EasyUI 组件的使用方法

目录 一、首先看官方 Accordion 文档说明 二、如何使用 Props 属性 三、如何使用 Methods(方法) 四、如何使用Methods(方法) 1. 通过 ref 给Vue3中的标签添加引用 2. 在script setup lang"ts"中定义变量引用 3. 增…

全面剖析OpenAI发布的GPT-4比其他GPT模型强在哪里

最强的文本生成模型GPT-4一、什么是GPT-4二、GPT-4的能力三、和其他GPT模型比较3.1、增加了图像模态的输入3.2、可操纵性更强3.3、复杂任务处理能力大幅提升3.4、幻觉、安全等局限性的改善3.6、风险和缓解措施改善更多安全特性3.7、可预测的扩展四、与之前 GPT 系列模型比较五、…

边缘计算那些事儿—边缘智能技术

0 背景 边缘智能是边缘计算中一个非常重要的方向。它将边缘计算和人工智能算法结合起来,在边缘设备上就近处理目标检测、物体跟踪,识别等任务。这种处理方式可以降低时延,减少数据上送云端对回传网络的冲击,同时保证数据的隐私和安…

「线性DP-步入」最大子串和

最大子串和 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 样例 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…