STM32F407VET6开发板RT-Thread的移植适配

news2024/9/17 7:29:47

前言

  • 最近购买了一块 STM32F407VET6开发板【魔女】,http://www.stm32er.com/

  • 通过原理图了解到,开发板板载 CMSIS-DAP 调试下载口,例程部分大部分以裸机程序为主

  • 目标:打算移植适配到 RT-Thread

适配 RT-Thread

  • RT-Thread 支持 STM32F407 系列的 MCU,因此不同的 STM32F407 开发板,可以通过【拷贝】一个类似的 BSP,快速搭建开发环境

  • 本篇通过通过初步搭建 【魔女】STM32F407VET6开发板 RT-Thread BSP

整理RT-Thread工程目录

  • 如果通过 github 拉取 RT-Thread 最新的代码,发现包含大量的 BSP,也就是工程目录体积比较大,因此,可以基于 RT-Thread 最新代码,搭建一个【最小】的精简目录,只保留 STM32F407 依赖的代码工程

  • RT-Thread 内核代码(不含 BSP)

  • STM32F407 HAL 库(包括驱动库)

  • STM32F407 BSP,这里可以使用 rt-thread\bsp\stm32\stm32f407-st-discovery

(1)内核目录

  • 这里部分没有使用的目录与文件就不添加到工程里面了

在这里插入图片描述

在这里插入图片描述

(2)libraries目录

  • rt-thread\bsp\stm32\libraries 下有多个STM32 MCU 系列的 HAL 库

  • 当前开发板使用:STM32F407VET6,因此只需要 STM32F4xx_HAL

  • rt-thread\bsp\stm32\libraries\HAL_Drivers 下面包含常用的设备驱动,因此也拷贝到工程中

在这里插入图片描述

(3)bsp目录

  • 这里直接拷贝 rt-thread\bsp\stm32\stm32f407-st-discovery 即可,后面基于这个 bsp 做一些适配操作

在这里插入图片描述

构建适配修改

  • 构建编译,需要根据目录的调整,修改一下配置

  • 当前的 IDE 使用 Keil MDK5,版本 5.36

  • RT-Thead ENV 工具: 2.0

调整 RT-Thread 目录配置

  • stm32f407-st-discovery/Kconfig : 修改 RTT_DIR := ../rt-thread

  • stm32f407-st-discovery/SConstruct : 修改 RTT_ROOT = os.path.normpath(os.getcwd() + '/../rt-thread')

在这里插入图片描述

更新配置并编译

  • 通过 RT-Thread ENV 工具: menuconfig 打开图形配置,然后保存退出,更新 rtconfig.h 文件

  • 通过 RT-Thread ENV 工具:scons --target=mdk5 更新生成 Keil MDK5 的工程 project.uvprojx

  • 使用 Keil MDK5 打开 project.uvprojx,或者 双击 project.uvprojx 打开 工程

  • 全编译,发现编译通过

适配与修改

  • 更改 Keil MDK5 STM32 MCU 型号:STM32F407VET6

  • 后续可以进一步确认链接脚本的配置:Flash 与 RAM 大小是否合适: stm32f407\stm32f407-st-discovery\board\linker_scripts\link.sct

在这里插入图片描述

  • 更改调试下载器为 : CMSIS-DAP

在这里插入图片描述
在这里插入图片描述

  • 点击 Keil MDK5 下载按钮,发现正常下载

更改 LED 引脚

  • 通过查看 【魔女】 STM32F407VET6 开发板, LED 红灯引脚为 PC5

在这里插入图片描述

/* defined the LED_RED pin: PC5 */
#define LED_RED_PIN    GET_PIN(C, 5)

int main(void)
{
    /* set LED0 pin mode to output */
    rt_pin_mode(LED_RED_PIN, PIN_MODE_OUTPUT);

    while (1)
    {
        rt_pin_write(LED_RED_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED_RED_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }

    return RT_EOK;
}
  • 修改引脚后,再次编译并下载,发现 开发板 LED 红灯正常闪烁, RT-Thread 初步运行起来了

小结

  • 本篇记录 STM32F407VET6 开发板 RT-Thread BSP 的搭建过程,由于 RT-Thread 支持 STM32F407 系列的 BSP,因此通过拷贝 相似 平台 BSP,可以快速搭建工程

  • 接下来确认 RT-Thread MSH 串口驱动是否正常

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

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

相关文章

基于准静态自适应环型缓存器(QSARC)的taskBus万兆吞吐实现

文章目录 概要整体架构流程技术名词解释技术细节1. 数据结构2. 自适应计算队列大小3. 生产者拼接缓存4. 高效地通知消费者 小结1. 性能表现情况2. 主要改进3. 源码和发行版 概要 准静态自适应环形缓存器(Quasi-Static Adaptive Ring Cache)是taskBus用于…

【Python报错已解决】 No Python at ‘C:\Users...\Python Python39\python.exe’

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查Python安装路径2.2 …

苍穹外卖随记(一)

黑马苍穹外卖逻辑和细节的问题和解决 1.后端查询到员工的日期信息,将信息进行json化传给前端时发生:前端收到的是不标准的日期json串。 解决:1.注解进行json格式化(JsonFormat)2. 在spring MVC中,通过消息…

如何验证VMWare WorkStation的安装?

如何验证VMWare WorkStation的安装? 右击"网络",点击 打开"网络和Internet设置",点击更改适配器选项,如果出现VMNet1和VMNet8,则说明安装成功。

内网穿透(cpolar实现)

目录 一、介绍 二、内网穿透工具cpolar实现 1.下载与安装 2.cpolar指定authtoken 3.获取临时域名 4.验证临时域名有效性 一、介绍 内网穿透,即 NAT 穿透(Network Address Translation Traversal),是一种网络技术&#xff0…

Python爬虫使用实例-wallpaper

1/ 排雷避坑 &#x1f95d; 中文乱码问题 print(requests.get(urlurl,headersheaders).text)出现中文乱码 原因分析&#xff1a; <meta charset"gbk" />解决方法&#xff1a; 法一&#xff1a; response requests.get(urlurl,headersheaders) response.en…

java基础-IO(4)管道流 PipedOutputStream、PipedInputStream、PipedReader、PipedWriter

管道 提到管道&#xff0c;第一印象就是水管或者地下管道&#xff0c;一节接着一节&#xff0c;形如下图。 管道流 "流"从上一个管道 ——-> 下一个管道。又细分为字节流和字符流。 字节流&#xff08;PipedOutputStream、PipedInputStream&#xff09; 如果…

SSM框架介绍

SSM通常指的是三个开源框架的组合&#xff0c;即Spring、SpringMVC&#xff08;Spring Web MVC&#xff09;和MyBatis&#xff0c;这三个框架经常一起使用来开发Java企业级应用&#xff0c;特别是在Web应用开发中非常流行。 SSM框架介绍 Spring 简介&#xff1a;Spring是一个…

谷粒商城のNginx

文章目录 前言一、Nginx1、安装Nginx2、相关配置2.1、配置host2.2、配置Nginx2.3、配置网关 前言 本篇重点介绍项目中的Nginx配置。 一、Nginx 1、安装Nginx 首先需要在本地虚拟机执行&#xff1a; mkdir -p /mydata/nginx/html /mydata/nginx/logs /mydata/nginx/conf在项目…

ModuleNotFoundError: No module named ‘mmcv.transforms‘

不得已的解决方法&#xff1a; mmcv升级到2.0.0即可解决 升级后自然又面临一系列不兼容问题&#xff01; 官方文档查漏补缺

【STM32】呼吸灯实现

对应pwm概念可以去看我的博客51实现的呼吸灯 根据对应图我们可知预分频系数为999&#xff0c;重装载值为2000&#xff0c;因为设置内部时钟晶振频率为100MHZ &#xff0c;1s跳 100 000000次 &#xff0c;跳一次需要1/100 000000s 20ms0.02s 对应跳的次数为 我们使用通用定时器…

九,自定义转换器详细操作(附+详细源码解析)

九&#xff0c;自定义转换器详细操作&#xff08;附详细源码解析&#xff09; 文章目录 九&#xff0c;自定义转换器详细操作&#xff08;附详细源码解析&#xff09;1. 基本介绍2. 准备工作3. 自定义转换器操作4. 自定义转换器的注意事项和细节5. 总结&#xff1a;6. 最后&…

【前端学习】AntV G6-07 深入图形与图形分组、自定义节点、节点动画(上、中)

课程链接 AntV G6&#xff1a;深入图形与图形分组、自定义节点、节点动画&#xff08;上&#xff09;_哔哩哔哩_bilibili AntV G6&#xff1a;深入图形与图形分组、自定义节点、节点动画&#xff08;中&#xff09;_哔哩哔哩_bilibili 图形分组 Group | G6 (antgroup.com) 自…

ARM32开发——DMA内存到内存

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 需求数据交互流程开发流程依赖引入DMA初始DMA传输请求完整代码 关心的内容DMA初始化DMA初始化DMA数据传输请求完整代码 DMA中断开启…

封装智能指针 qt实现登录界面

1.封装独占智能指针——unique_ptr #include <iostream> #include <utility> // For std::move// 命名空间 namespace custom_memory { template <typename T> class myPtr { public:// 使用初始化列表进行初始化explicit myPtr(T* p nullptr) noexcept : …

卡西莫多的诗文集2022-2024.9月6-校庆国庆专版定版

通过网盘分享的文件&#xff1a;卡西莫多的诗文集2022-2024.9月6-A5-校庆国庆专版-定版.pdf 链接: https://pan.baidu.com/s/1cpFK5k1baGXbSGxY30GL_A?pwdjgnt 提取码: jgnt 卡西莫多的诗文集2022-2024.9月6-校庆国庆专版&#xff0c;又稍作修改并勘误了一些错字&#xff0c;…

AWQ量化(Activation-aware Weight Quantization)

论文&#xff1a; AWQ: Activation-aware Weight Quantization for On-Device LLM Compression and Acceleration 中文解读&#xff1a; 深入理解AWQ量化技术 - 知乎 (zhihu.com) 动机&#xff1a;端侧设备用LLM&#xff0c;为了减少显存占用量&#xff0c;所以要用INT4量化&am…

【Jupyter Notebook】汉化

1.打开:Anaconda Prompt 2.输入:"activate Zhui01"(注意&#xff1a;Zhui01是刚创建的环境名字) activate Zhui01 3.输入:"pip install jupyterlab-language-pack-zh-CN" pip install jupyterlab-language-pack-zh-CN 4.打开:Jupyter Notebook 5.点击&q…

Mysql高级篇(中)——七种常见的 join 查询图

注意&#xff1a; MySQL是不支持 FULL OUTER JOIN 这种语法的&#xff0c;因此要实现图中 6、7的查询结果&#xff0c;可以使用 UNION 关键字结合 LEFT JOIN、RIGHT JOIN 实现&#xff0c;UNION可以实现去重的效果&#xff1b; 参考如下代码&#xff1a; -- MySQL中 图标6 的实…

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物&#xff0c;今天我们实现一下人物实现移动和跳起&#xff0c;依次点击&#xff0c;我们准备创建一个C#文件 创建好我们点击进去&#xff0c;就会跳转到我们的Vision Studio&#xff0c;然后输入这些代码 using UnityEngine;public class M…