RT Thread 4.0提供了新的BSP框架

新 BSP 框架的主要特性如下:

  • 提供多系列 BSP 模板,大大降低新 BSP 的添加难度;

  • 每个 BSP 都配有齐全的驱动文件,开发者可以方便地使用所有驱动;

  • 开发者可以使用 CubeMX 工具对 BSP 进行图形化配置;

由于Hal库是以后主流,在使用STD库对STM32很熟悉后,建议转到Hal库

本文参考官方《STM32系列BSP制作教程》,由于官方提供的CubeMX与Hal库版本固定,不一定适用所有初步使用的人,本文使用自己的CubeMX制作BSP并强调注意事项。

其中一些解释如内容说明、Scons、Env等,详细参见《STM32系列BSP制作教程》

1. BSP 制作方法

BSP 的制作过程分为如下五个步骤:

  1. 复制通用模板

  2. 使用 CubeMX 工具配置工程

  3. 修改 BSP 中的 Kconfig 文件

  4. 修改构建工程相关文件

  5. 重新生成工程

1.1 复制通用模板

复制        rt-thread-4.0.0\bsp\stm32\libraries\templates\stm32f4xx

重命名为 rt-thread-4.0.0\bsp\stm32\stm32f407-pz6808l

1.2 使用CubeMX配置工程

本文使用的是CubeMX 5.2版本

配置RCC使能外部晶振

使能调试

使能UART

时钟配置

工程管理,生成到BSP框架里的文件夹下

生成工程如下

1.3 HAL库替换

删除MDK-ARM文件夹

复制Drivers到 rt-thread-4.0.0\bsp\stm32\libraries 文件下并重命名为 STM32F4xx_HAL_502

从模板中复制SConscript文件

1.4文件修改

rt-thread-4.0.0\bsp\stm32\stm32f407-pz6808l\board\board.c

用生成的main.c中的 SystemClock_Config 进行替换

修改 board/Kconfig 文件

修改链接脚本

填写对应芯片的Flah和RAM大小,主要有些芯片有非连续RAM,填写RAM1大小即可

修改主工程目录下的

修改 SConstruct 链接自己的HAL库

修改 board 目录下的 SConscript

修改为需要制作BSP的芯片型号对应内容

注意 stm32f4xx_hal_msp.c 文件  查看是否包含有串口初始化 HAL_UART_MspInit ,没有则用MX重新生成,否则程序运行会出错(串口异常)

1.5 使用Env工具生成工程

打开模板 template.uvprojx ,对工程进行相关设置,这样以后每次文件的改动需要重新生成工程时,工程就不用再设置了;

在 env 界面输入命令 menuconfig 对工程进行配置,并生成新的 rtconfig.h 文件。

调试日志的配置,这样看到初始化时的一些信息

配置完save,然后输入命令 scons --target=mdk5 重新生成工程

keil打开project工程,编译无误,制作BSP成功。

转载于:https://www.cnblogs.com/silencehuan/p/10904048.html

RT-Thread 4.0 + STM32F407 学习笔记1相关推荐

  1. STM32F407学习笔记——MG90S舵机模块(基本控制)

    STM32F407学习笔记--MG90S舵机模块(基本控制) 一.基本原理: 通过改变PWM占空比来实现舵机进行不同角度转动,下面给出旋转角度与脉冲时间及对应占空比的关系(时基脉冲=20ms). 旋转 ...

  2. 【STM32F407学习笔记】GPIO(一)

    [STM32F407学习笔记]GPIO(一) 1. GPIO基础知识 1.1 GPIO工作方式 1.2 GPIO相关配置寄存器 1.2.1 端口模式寄存器:GPIOx_MODER 1.2.2 输出类型 ...

  3. mysql查询数据为0的所有字段6_MySQL8.0 初级学习笔记(六)查询数据

    MySQL8.0 初级学习笔记(六)查询数据 MySQL8.0 初级学习笔记(六)查询数据 查询有多种方法:单表查询,使用集合函数查询,连接查询,子查询,合并查询结果,为表和字段取别名,使用正则表达式 ...

  4. 日语课程0基础学习笔记——第一课

    学习目标: 编程0基础学习笔记--前言 这是一个个人使用的日语学习记录博客!根据B站的up日语教程一直跟下来,从第一天开始记录.后续会把我学习的内容和知识点尽量多的记录在这个博客中,不仅是方便自己复习 ...

  5. away3d 4.0.9Gold 学习笔记 加载模型(6)

    学习笔记提供模型和贴图请勿用于商业用途. 1 package 2 { 3 import away3d.containers.ObjectContainer3D; 4 import away3d.con ...

  6. .NET 2.0 CER学习笔记

    CER是.NET 2.0 CLR方面的重要改进,旨在帮助那些对稳定性高度苛刻的程序对付.NET Framework的不稳定因素.因为普通的程序很少会用到,所以一直没有对这个特性加以足够重视.现在碰巧在 ...

  7. cocos2d-x 3.0 版本学习笔记1

    3.0版本的功能很强大,相对以前的版本改动也很大.现在来体验下3.0版本的.这里主要记录在学习中碰到的各种问题.体验版本:cocos2d-x-3.0beta2 特别说明:这个学习的过程主要是参照了 & ...

  8. 0.数据结构学习笔记大纲

    推荐学习参考书籍: 实体课本:  1.严蔚敏.吴伟民编著的教材(都是伪算法) 实现代码:    高一凡 数据结构概述 定义:          我们如何把现实中大量而复杂的问题以特定的数据类型和特定的 ...

  9. mqttnet 详解_MQTTnet 3.0.5学习笔记

    段时间在使用MQTTnet,都说这个东西比较好,可是翻了翻网上没有例子给参考一下. 今天算是找到了,给高手的帖子做个宣传吧. 由于GitHub上介绍的东西比较少,以我的水平真是不知道怎么用,先照葫芦画 ...

  10. 【学无止境】 基于ThinkPHP的OAuth2.0实现 ----OAuth2.0 个人学习笔记 Two

    ThinkPHP 结合 OAuth2.0 准备工作 第一我们得准备好OAuth2.0的源码包,下载地址点这里. 我们将下载好的源码包放在thinkphp的vendor文件夹下面.这里注意只要src文件 ...

最新文章

  1. R语言双因素方差分析
  2. 使用 PHPMailer 发送邮件
  3. bash特性之六(bash的快捷键)
  4. 渗透测试learning日记(1)
  5. Cocos2d-xna : 横版战略游戏开发实验5 TiledMap实现关卡地图
  6. python交互式编程入门先学什么_为什么 Python 对于编程入门学习来说,是一门很棒的语言...
  7. 【Verilog语法】分支延迟槽
  8. 转换预定义的字符为html实体,php把一些预定义的 HTML 实体转换为字符。
  9. c# 操作word中在右下角插入图片
  10. Jmeter如何在大并发测试下,让登录或者后续接口只执行一次?
  11. 通过JDK动态代理实现拦截器
  12. 计算机期末考试知识,干货|计算机期末复习宝典
  13. 两堆草前饿死的驴——选择永远是件痛苦的事
  14. php生成一个500错误_Hyperf 发布 v2.0.1 版本 | 企业级的 PHP 微服务云原生协程框架...
  15. ascii码表的使用
  16. AB_PLC编程软件RSLogix_500_与PLC通讯详细说明
  17. Android基于腾讯X5内核的WebView(超级浏览器)
  18. npm报错 443(error : getaddrinfo enotfound registry.npmjs.org registry.npmjs.org:443)
  19. Android Studio 安装应用失败总结
  20. thymeleaf 调用后台方法

热门文章

  1. (原創) 开启Notebook时,建议从天版中间开启 (日記)
  2. 6月28日云栖精选夜读丨优酷世界杯的好后卫:云计算成为靠谱的流媒体保障体系...
  3. ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则...
  4. ABP官方文档翻译 5.1 Web API控制器
  5. Qt中的对话框(模态,非模态,关于,问题,文件)
  6. HTTP, WWW-Authenticate, Authorization 验证授权 | Apache验证 | Python处理
  7. Active Directory系列之二:部署第一个域
  8. Qt5学习笔记之bin文件合成工具四:完善功能打包程序
  9. Python3 从零单排27_锁信号量Event定时器
  10. ef core中使用code first