stm32通用外部spi下载算法实现

参考硬汉嵌入式:【实战技能】任何支持SWD接口的单片机都可以方便移植的SPI Flash烧写算法制作_哔哩哔哩_bilibili

该up主提供的stm32H7的模板工程,目前需求是实现基于正点原子探索者stm32f407zet6+W25Q128

下载算法实现步骤

  1. 使用cubemx建立一个LED工程,主要是配置系统时钟
  2. 复制系统时钟配置函数
  3. 复制stm32f4的hal库文件和添加头文件路径
  4. 添加必要的文件模板工程
  5. 修改gpio模拟spi外设的引脚system_stm32f4xx.c文件
  6. 修改FlashDev.c文件的的FlashDevice内部的参数,主要是flash的大小,和算法名称
  7. 修改输出文件名和mcu型号选择
  8. 编译生成flm下载算法文件

1.使用cubemx建立一个LED工程,主要是配置系统时钟
1.1 外部时钟
stm32通用外部spi下载算法实现_第1张图片

1.2设置主频
stm32通用外部spi下载算法实现_第2张图片

1.3生成工程如下

2.复制系统时钟配置函数
2.1复制 stm32f4xx_hal_conf.h 和system_stm32f4xx.c 到user目录下
stm32通用外部spi下载算法实现_第3张图片

3.复制stm32f4的hal库文件,添加头文件路径
复制hal库文件
stm32通用外部spi下载算法实现_第4张图片

添加头文路径
stm32通用外部spi下载算法实现_第5张图片

复制系统时钟配置函数
注意:系统时钟函数必须返回0,表示时钟配置成功,否则初始化就是失败
stm32通用外部spi下载算法实现_第6张图片

4.添加必要的文件模板工程

stm32通用外部spi下载算法实现_第7张图片

5.修改gpio模拟spi外设的引脚和添加system_stm32f4xx.c文件
硬件连接

spi涉及的gpio配置
GPIOB3======>SPI_CLK
GPIOB4======>SPI_MISO
GPIOB5======>SPI_MOSI
GPIOB6======>SPI_CS
stm32通用外部spi下载算法实现_第8张图片
stm32通用外部spi下载算法实现_第9张图片

6.修改FlashDev.c文件的的FlashDevice内部的参数,主要是flash的大小,和算法名称

stm32通用外部spi下载算法实现_第10张图片

7.修改输出文件名和mcu型号选择
输出文件
stm32通用外部spi下载算法实现_第11张图片

修改CPU型号

stm32通用外部spi下载算法实现_第12张图片
修改添加宏定义

STM32F407xx
stm32通用外部spi下载算法实现_第13张图片

8.最后编译生成flm文件

stm32通用外部spi下载算法实现_第14张图片

  1. flm文件的使用
    2.1复制flm文件到指定文件夹

C:\Keil_v5\ARM\Flash
stm32通用外部spi下载算法实现_第15张图片

2.2创建一个工程,复制一个字库文件,将字库文件内容存储在外部flash中
添加一个ROM存储区域
stm32通用外部spi下载算法实现_第16张图片

添加一个字库文件放置在工程内部,设置字库文件的放置位置
stm32通用外部spi下载算法实现_第17张图片

修改存储区域入口

放置编译一优化

-keep=gb2312.o

stm32通用外部spi下载算法实现_第18张图片

选择存储区域
stm32通用外部spi下载算法实现_第19张图片
stm32通用外部spi下载算法实现_第20张图片

添加下载算法
stm32通用外部spi下载算法实现_第21张图片

设置算法
stm32通用外部spi下载算法实现_第22张图片

下载测试
下载中。。。。
stm32通用外部spi下载算法实现_第23张图片

检验中。。。。。
stm32通用外部spi下载算法实现_第24张图片

检验完成
stm32通用外部spi下载算法实现_第25张图片
代码仓库:https://gitcode.net/u010261063/temp_project#stm32%E9%80%9A%E7%94%A8spi%E4%B8%8B%E8%BD%BD%E7%AE%97%E6%B3%95%E5%AE%9E%E7%8E%B0

你可能感兴趣的:(STM32,stm32,外部flash下载算法)