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 ...
随机推荐
- 博主从零开始学习HTML(入门基础)
目录 从零开始学习HTML(入门基础) 互联网三大基石 HTML的Head标签中的常用元素 字体格式化标签 字符实体,以下写最常用的几个 html常用标签及解析 a标签 img标签 媒体标签audio ...
- sort,uniq,tr,cut,eval命令
目录 一.排序命令sort 1.格式 2.常用选项 3.例子 二.去除重复行操作命令uniq 1.格式 2.常用选项 3.示例 三.字符转换命令tr 1.格式 2.常用选项 3.参数 4.示例 四.数 ...
- Spring学习笔记-Hello Spring
实现原理 采用XML方式配置Bean的时候,Bean的定义和实现分离的,采用注解的方式可以将两者合为一体,Bean的定义信息直接以注解形式定义在实现类中,从而实现了零配置. 控制反转是一种通过描述(X ...
- XCTF-ics-07(floatval函数特性+Linux目录结构特性)
直接进入到项目管理页面,给了三段源码. 第一段 <?php session_start(); if (!isset($_GET[page])) { show_source(__FILE__); ...
- 线程状态Thread.State
线程状态Thread.State 线程状态.线程可以处于下列状态之一: NEW 至今尚未启动的线程处于这种状态. RUNNABLE 正在 Java 虚拟机中执行的线程处于这种状态. BLOCKED 受 ...
- 在线文本的编辑框——kindeditor富文本编辑的使用
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- CodeReview of JDK Source Code
jdk1.6.0_35/src.zip, only java package is reviewd(full package review caused a OutofMemory on java h ...
- CAS 5.3使用MySQL数据库验证
一.本例环境说明 JDK 1.8 CAS 5.3 apache-maven-3.6.0 mysql-5.6.32 二.CAS 5.3基础环境搭建与验证 需要按照<CAS 5.3服务器搭建> ...
- Innodb中怎么查看锁信息
一.前言 上一篇说了下innodb中锁的大概意思, 这篇说说怎么查看加的哪些锁.不然后续出现死锁或者锁等待都不知道为什么. 二.底层基础表信息 在学会如何查看有哪些锁信息时, 需要了解一些基础表信息, ...
- Nebula 2.5.0安装过程及遇到的坑
2021年8月23日,Nebula 发布了最新版本:2.5.0,正好赶上新环境部署,记录一下安装过程及遇到的坑: 一.准备工作 以下安装使用nebula用户,搭建集群模式,一共三台机器:192.168 ...