STM32F103ZET6制作BSP

STM32F103ZET6制作BSP

RT-thread

RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。它把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。针对资源受限的微控制器(MCU)系统,可通过方便易用的工具,裁剪出仅需要 3KB Flash、1.2KB RAM 内存资源的 NANO 版本(NANO 是 RT-Thread 官方于 2017 年 7 月份发布的一个极简版内核);而对于资源丰富的物联网设备,RT-Thread 又能使用在线的软件包管理工具,配合系统配置工具实现直观快速的模块化裁剪,无缝地导入丰富的软件功能包,实现类似 Android 的图形界面及触摸滑动效果、智能语音交互效果等复杂功能。

前期准备

STM32F103ZET6资源

  • MUC:STM32F103RCT6,512KB FLASH ,64KB RAM

RT-thread的源码获取

通过git获取RT-thread的源码

git clone https://github.com/RT-Thread/rt-thread.git

获取Env工具

在RT-thread官网获取获取Env工具

https://www.rt-thread.org/page/download.html

制作BSP

1. 复制通用模板

位置:

RT-thread\rt-thread\bsp\stm32\libraries\templates
工程模板说明
libraries/templates/stm32f0xxF0 系列 BSP 模板
libraries/templates/stm32f10xF1 系列 BSP 模板
libraries/templates/stm32f4xxF4 系列 BSP 模板
libraries/templates/stm32f7xxF7 系列 BSP 模板
libraries/templates/stm32l4xxL4 系列 BSP 模板

复制stm32f10x并修改名称为“myself_STM32f103zet6”

官网关于文件的结构介绍如下:

在接下来的 BSP 的制作过程中,主要修改board 文件夹内的配置文件。修改的内容如下:

项目需要修改的内容说明
CubeMX_Config (文件夹)CubeMX 工程
linker_scripts (文件夹)BSP 特定的链接脚本
board.c/h系统时钟、GPIO 初始化函数、芯片存储器大小
Kconfig芯片型号、系列、外设资源
SConscript芯片启动文件、目标芯片型号

2. 修改CubeMX 工程

默认的 CubeMX 工程在 CubeMX_Config 文件夹中

1.修改芯片类型

2.打开外部时钟,设置下载方式,打开串口外设

3.设置时钟

时钟设置为72MHZ

修改完毕就可以直接生成代码了。

3. 拷贝时钟函数

board.c 文件中存放了函数 SystemClock_Config() ,该函数负责初始化系统时钟。当使用 CubeMX 工具对系统时钟重新配置的时候,需要更新这个函数。

该函数由 CubeMX 工具生成,默认存放在board/CubeMX_Config/Src/main.c 文件中。但是该文件并没有被包含到我们的工程中,因此需要将这个函数从 main.c 中拷贝到 board.c 文件中。在整个 BSP 的制作过程中,这个函数是唯一要要拷贝的函数。

4. 修改 FLASH 和 RAM 的相关参数

board.h 文件中配置了 FLASH 和 RAM 的相关参数,这个文件中需要修改的是STM32_FLASH_SIZESTM32_SRAM_SIZE 这两个宏控制的参数。本次制作的 BSP 所用的STM32F103RBTx 芯片的 flash 大小为 128k,ram 的大小为 64k,修改如下

5.修改链接脚本

linker_scripts 链接文件如下图所示:

其他两个为IAR和GCC所用的,因为不用,所以不修改。

6. 修改 Kconfig 选项

修改 board/Kconfig 文件的内容有如下两点:

  • 芯片型号和系列
  • BSP 上的外设支持选项

7. 修改构建脚本

SConscript 脚本决定 MDK/IAR 工程的生成以及编译过程中要添加文件。

在这一步中需要修改芯片型号以及芯片启动文件的地址,修改内容如下图所示:

.s的目录

\RT-thread\rt-thread\bsp\stm32\libraries\STM32F1xx_HAL\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm

8. 修改工程模板

template 文件是生成 MDK/IAR 工程的模板文件,通过修改该文件可以设置工程中使用的芯片型号以及下载方式。MDK4/MDK5/IAR 的工程模板文件,如下图所示:

9.重新生成工程

重新生成工程需要使用 env 工具。

scons --target=mdk5

测试

直接使用模板自带的LED程序

#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>

/* defined the LED0 pin: PB1 */
#define LED0_PIN    GET_PIN(E, 5)

int main(void)
{
    int count = 1;
    /* set LED0 pin mode to output */
    rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);

    while (count++)
    {
        rt_pin_write(LED0_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED0_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }

    return RT_EOK;
}

下载,使用xshell打开串口1

可知制作完成

打包为独立工程

使用ENv工具


scons --dist

成功后会多一个dist文件,里面存放了可以任意移动的工程

载,使用xshell打开串口1

[外链图片转存中…(img-zrRN6Xm7-1594978056721)]

可知制作完成

打包为独立工程

使用ENv工具


scons --dist

[外链图片转存中…(img-59gfK8Yo-1594978056722)]

成功后会多一个dist文件,里面存放了可以任意移动的工程


在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值