# Stm32H750Bootloader **Repository Path**: xwos/Stm32H750Bootloader ## Basic Information - **Project Name**: Stm32H750Bootloader - **Description**: 本项目是Stm32H750的Bootloader工程。主要功能:初始化QSPI FLash,开启QPI模式,并将Flash映射到0x90000000的地址上。 - **Primary Language**: Unknown - **License**: MPL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-07-27 - **Last Updated**: 2026-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 介绍 本项目是Stm32H750开发板的Bootloader工程。主要功能: + 初始化QSPI Flash,开启QPI模式。 + 将QSPI Flash映射到地址0x90000000上。 + 启动QSPI Flash中的代码。 ## 限制 + 当运行QSPI Flash中的代码时,不可停止QSPI的时钟。 选择HCLK3作为时钟源是因为HCLK3的上级时钟(SYSCLK)不会停止,可允许QSPI Flash中的代码重新初始化系统时钟。 + 重新初始化系统时钟时,要注意QSPI的频率是系统时钟的1/4,当初设置系统为480MHz时,可能超过QSPI Flash的极限频率: + 华邦W25Q系列的QSPI Flash在3.3V供电时可超过120MHz + 其他厂商的QSPI FLASH极限频率可能只有108MHz,但实测120MHz也可工作,但不建议在量产中使用。 ## 硬件 ### 正点原子 + M100Z-M7 + 硬件主页: + MCU: STM32H750VBT6 ![M100z7Stm32H750.png](https://gitee.com/xwos/AtkM100zStm32H750/raw/main/Doc/M100z7Stm32H750.png) + MiniProStm32H750 + 硬件主页: + MCU: STM32H750VBT6 ![MiniProStm32H750](https://gitee.com/xwos/AtkM100zStm32H750/raw/main/Doc/MiniProStm32H750.png) -------- ### WeAct Studio + MiniStm32H750 + 硬件主页: + MCU: STM32H750VBT6 ![WeActMiniStm32H750](https://gitee.com/xwos/WeActMiniStm32H750XWOS/raw/main/Doc/WeActMiniStm32H750.jpg) ## 开发指南 ### 下载源码 ```shell git clone --recursive https://gitee.com/xwos/Stm32H750Bootloader.git ``` ### 搭建开发环境 参考 ### STM32CubeMX工程 **STM32CubeMX** 工程文件的路径 `Hal/CubeMX/Stm32H750Bootloader.ioc` 。 ### 使用Vscode开发(推荐) 参考 的 **Vscode** 章节。 ### 使用STM32CubeIDE开发(不推荐) 参考 的 **Eclipse STM32CubeIDE** 章节。 ## 源码说明 ### 源码结构 + XWOS:XWOS的源码,也是编译时 **头文件** 的搜索根目录。 + Board: **电路板目录** ,也是编译开始的目录,在XWOS的编译系统中,用 `$(XWOS_BRD_DIR)` 表示此目录。 + App:用户的应用程序模块 + Hal:驱动工程 + Debugger:调试配置文件 + CHANGELOG.md:变更日志 + LICENSE.txt:开源协议 + README.md:使用说明(本文件) ### BSP + STM32CubeMX配置文件: `Hal/CubeMX/Stm32H750Bootloader.ioc` + 中断向量表: `Hal/CubeMX/ivt.c` + 时钟源 + SYSCLK: 400MHz + SRC: PLL1 + PLL1: 400MHz + Src: CSI + CSI: 4MHz + Cache + DCache/ICache默认关闭,原则上Bootloader不开启Cache, 若需要开启Cache,可修改配置文件 `Board/cfg/board.h` : + DCache: `#define BRDCFG_DCACHE 1` + ICache: `#define BRDCFG_ICACHE 1` + QSPI Flash + 时钟源:HCLK3(200MH) + 分频:2 (寄存器设置为1) + 频率:100MHz + 映射地址: **0x90000000** + 大小: **16MiB** + 工作模式:QSPI + QIO Fast Read (Command: EBH) + GPIO + CLK: PB2 + CS: PB6 + IO0: PD11 + IO1: PD12 + IO2: PE2 + IO3: PD13 + UART + USART1 + 功能:终端 + 参数:2M波特率/8位数据/1位停止位/无奇偶校验 + GPIO + TXD: PA9 + RXD: PA10 + 驱动(由上往下分为三层) + 设备栈提供统一的接口框架: `XWOS/xwmd/ds/uart` + 适配设备栈接口的驱动: `Hal/xwds/uart.c` + Stm32CubeMX驱动: `Hal/CubeMX/Core/Src/usart.c` + 注意:官方驱动库对RTO中断的处理存在BUG,XWOS所提供的代码已修复。 + 适配 `xwlogf` : `XWOS/xwbd/WeActMiniStm32H750/board/xwac/xwlib/log.c` + Key + GPIO: PA0,可在 `Board/cfg/board.h` 中配置 + `BRDCFG_KEY_GPIO_PORT` : GPIO Port + `BRDCFG_KEY_GPIO_PIN` : GPIO Pin + `BRDCFG_KEY_GPIO_POLARITY` + `1U` 表示按下按键将检测到高电平 + `0U` 表示按下按键将检测到低电平 + 功能:启动检测到Key被按下,Bootloader将进入Downloader模式(待开发) + **注意:PA0同时作为唤醒PIN,因此仅在破坏性复位时才检测Key是否被按下** + 破坏性复位是指RCC_RSR + [bit30]LPWRRSTF + [bit28]WWDG1RSTF + [bit26]IWDG1RSTF + [bit24]SFTRSTF + [bit23]PORRSTF + [bit22]PINRSTF + [bit21]BORRSTF ### Download模式(待开发)