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 ...
随机推荐
- 用 Java 实现常见的 8 种内部排序算法
一.插入类排序 插入类排序就是在一个有序的序列中,插入一个新的关键字.从而达到新的有序序列.插入排序一般有直接插入排序.折半插入排序和希尔排序. 1. 插入排序 1.1 直接插入排序 /** * 直接 ...
- 终极蛇皮上帝视角之铁头娃之鲁迅之暑假闲的慌之bilibili看尚学堂网课的非洲酋长java小复习
转自https://www.sxt.cn/Java_jQuery_in_action/eight-cache-problem.html 第一个点 自动装箱与拆箱的功能是所谓的"编译器蜜糖(C ...
- Typora使用Gitee图床
前言 现在比较流行的Markdown编辑器应该是Typora,但是Typora本身不支持本地上传图片的云端存储,所以当我们写博客的时候,需要上传图片,就得自己设置图床,今天给大家推荐一款免费的图床-G ...
- 客户端连接mysql数据库反应慢
远程客户端连接MysqL数据库太慢解决方案 局域网客户端访问mysql 连接慢问题解决 编辑mysql配置文件 # vi my.conf [mysqld] skip-name-resolve 重启my ...
- MySQL-18-MHA+Atlas读写分离架构
Atlas介绍 Atlas是由Qihoo 360 Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目 它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了 ...
- 树莓派远程连接工具SSH使用教程
树莓派远程连接工具SSH使用教程 树莓派 背景故事 树莓派作为一款迷你小主机,大部分的使用场景都会用到远程调试,远程调试用到最多的方式一般就是VNC和SSH,SSH就是命令行型的远程方式,简单来说就是 ...
- gcc limits.h的bug定位看include_next和默认搜索路径
手编的交叉编译工具链经常报一堆宏未定义,例如下面是编译gtest的时候报_POSIX_PATH_MAX宏未定义,有时还会上报SSIZE_MAX等宏未定义: googletest/src/gtest-f ...
- liunx上安装nacos
下载nacos wget https://github.com/alibaba/nacos/releases/download/1.4.1/nacos-server-1.4.1.tar.gz 启动服务 ...
- centos7-同步时间
yum install -y ntp ntpdate ntpdate -u cn.pool.ntp.org # 阿里云ntp ntpdate ntp1.aliyun.com 但这样的同步,只是强制性的 ...
- 浅谈 asp.net core web api
希望通过本文能够了解如下内容: ControllerBase Attributes Action的返回值类型 ControllerBase 当我们开始实际上项目, 真正实操 anc 时, 肯定会用到 ...