RT-Thread 4.0 + STM32F407 学习笔记1
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 的制作过程分为如下五个步骤:
复制通用模板
使用 CubeMX 工具配置工程
修改 BSP 中的 Kconfig 文件
修改构建工程相关文件
重新生成工程
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成功。
RT-Thread 4.0 + STM32F407 学习笔记1的更多相关文章
- 从零开始搭建.NET Core 2.0 API(学习笔记一)
从零开始搭建.NET Core 2.0 API(学习笔记一) 一. VS 2017 新建一个项目 选择ASP.NET Core Web应用程序,再选择Web API,选择ASP.NET Core 2. ...
- Swift 2.0 字符串学习笔记(建议掌握OC字符串知识的翻阅)
自己公司开现在使用OC语言在写,但Swift似乎是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触swift,但又由于公司的项目赶,也没有时间去好好地学习这款开发语言.现在年底了,项目 ...
- Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用
接上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件中才能用<property> ...
- Spring 4.0.2 学习笔记(1) - 最基本的注入
1. 添加maven支持 <dependency> <groupId>org.springframework</groupId> <artifactId> ...
- Google Guava14.0 瓜娃学习笔记
Guava 是java api的增强与扩展,提供复杂的java 数据结构,使你的代码更简短精炼,具有良好的可读性.看看guava给我们提供了哪些很酷的功能: 集合创建: Map<String, ...
- 《Ruby语言入门教程v1.0》学习笔记-01
<Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...
- Java 螺纹第三版 第一章Thread介绍、 第二章Thread创建和管理学习笔记
第一章 Thread导论 为何要用Thread ? 非堵塞I/O I/O多路技术 轮询(polling) 信号 警告(Alarm)和定时器(Timer) 独立的任务(Ta ...
- Swift2.0 函数学习笔记
最近又有点忙,忙着找工作,忙着适应这个新环境.现在好了,上班两周周了,也适应过来了,又有时间安安静静的就行我们前面的学习了.今天这篇笔记,记录的就是函数的使用.下面这些代码基本上是理清楚了函数的额使用 ...
- Vue1.0基础学习笔记整理
最近一直在使用Vue.js开发项目,现将在学习过程中遇到的一些学习小细节总结如下: 1.只处理单次插值,今后的数据变化就不会再引起插值更新了 <span>This will never c ...
随机推荐
- 用KeePass管理密码并用Synology_Drive或者GoodSync实时双向同步电脑桌面和群晖NAS2021年8月5日
用KeePass管理密码并用Synology_Drive或者GoodSync实时双向同步电脑桌面和群晖NAS2021年8月5日 我通常会把所有办公文档.办公表格和办公图片都实时同步保存到 Synolo ...
- 用AutoHotkey的热字串功能启动常用电脑程序软件 Version 2 Build 20191214
; 用AutoHotkey的热字串功能启动常用电脑程序软件 Version 2 Build 20191214 ; 电脑上的快捷键太多了,记都记不住,容易冲突和搞混,所以做了个热字串启动; 用法:运行此 ...
- ;~ 小部分AutoHotkey脚本源代码测试模板样板.ahk
; ;~ 小部分AutoHotkey脚本源代码测试模板样板.ahk ;~ 请把一行或几行少量代码放到此文件中实际测试一下,;~ 看看测试结果如何,等到能够实现代码功能时再复制到自己的脚本代码文件中;~ ...
- netty系列之:使用POJO替代buf
目录 简介 decode和encode 对象序列化 使用编码和解码器 总结 简介 在之前的文章中我们提到了,对于NioSocketChannel来说,它不接收最基本的string消息,只接收ByteB ...
- 阿里、腾讯、百度、网易、美团Android面试经验分享,拿到了百度、腾讯offer
基本情况 2021届普通本科,Android开发岗. 此文主要是2020年秋招面试经验汇总,最终拿到了百度.腾讯的offer. 主要包括阿里三面,腾讯四面,百度三面,网易三面,美团一场面完. 阿里(由 ...
- [论文阅读] Residual Attention(Multi-Label Recognition)
Residual Attention 文章: Residual Attention: A Simple but Effective Method for Multi-Label Recognition ...
- Configure Hosts with Puppet
According to "Pro Puppet" 2nd edition, Chapter 2, "Creating a Module to Manage SSH&qu ...
- PrismWPF网盘
技术点 文件分片上传与下载 Vue 正在努力中.... 客户端 采用 WPF:Net5+Prism8+RestSharp 客户端基本结构如下 模块说明 Model: 主要放置Prism模块 ZFile ...
- pikachu Files Inclusion
文件包含分为远程文件包含和远程文件包含 比如程序员为了提高效率让代码看起来简洁,会使用包含函数的功能,写多个文件 之后需要了进行调用,比如.c写了很多个函数分别在不同的文件里,用的时候直接 引用文件即 ...
- 备战秋招之十大排序——O(nlogn)级排序算法
时间复杂度O(nlogn)级排序算法 五.希尔排序 首批将时间复杂度降到 O(n^2) 以下的算法之一.虽然原始的希尔排序最坏时间复杂度仍然是O(n^2),但经过优化的希尔排序可以达到 O(n^{1. ...