嵌入式语言运行时编程语言解释器编译器物联网系统编程【免费下载链接】micropythonMicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems项目地址https://gitcode.com/gh_mirrors/mi/micropython点击查看免费下载导读本文围绕 MicroPython 官方仓库中 WeAct F411 BlackPill 的板级支持文档ports/stm32/boards/WEACT_F411_BLACKPILL/board.md展开系统梳理该开发板在 MicroPython 中的版本差异、SPI Flash 引脚占用、变体variant选择与固件定制构建方法。读完本文你将掌握如何针对不同版本的 BlackPillv1.3 / v2.0 / v3.1和不同的 HSE 晶振频率、SPI Flash 容量通过make命令行参数或官方变体配置文件构建出完全匹配你手中硬件的 MicroPython 固件并能规避板载 Flash 与 GPIO 排针之间的引脚冲突。板卡概览版本众多、兼容性需逐一确认WeAct F411 BlackPill 是基于 STM32F411CEU6 的最小系统开发板在 MicroPython 中以WEACT_F411_BLACKPILL作为 BOARD 名默认变体为v3.1。该板有一个显著特点所有版本在背面都预留了 SO-8 封装的 SPI Flash 焊盘但市场上很多板子出厂时并未焊接 Flash 芯片需要用户自行选购或焊接。从源码看板级定义位于 ports/stm32/boards/WEACT_F411_BLACKPILL/mpconfigboard.h其中明确声明#define MICROPY_HW_BOARD_NAME WEACT_F411_BLACKPILL #define MICROPY_HW_MCU_NAME STM32F411CE #define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_ENABLE_RTC (1) #define MICROPY_HW_ENABLE_USB (1) #define MICROPY_HW_USB_FS (1)即板级支持内置 RTC、USB FS用于 REPL/虚拟串口以及可选的外部 SPI Flash。值得注意的是mpconfigboard.h中还将 Flash 等待周期显式设置为FLASH_LATENCY_3注释说明这是为了规避部分用户在FLASH_LATENCY_2下遇到的稳定性问题对应社区论坛帖子。官方板级 JSON 清单 ports/stm32/boards/WEACT_F411_BLACKPILL/board.json 记录了厂商为 WeAct Studio、MCU 为stm32f411并列出 5 个官方变体变体说明V13v1.3 板无 SPI FlashV13_FLASH_4Mv1.3 板带 4MB SPI FlashV20_FLASH_4Mv2.0 板带 4MB SPI FlashV31_FLASH_8Mv3.1 板带 8MB SPI FlashV31_XTAL_8Mv3.1 板带 8MHz 晶振版本差异晶振、Flash 引脚与用户按键文档明确指出截至 2024 年 9 月v3.1 是当前版本并且该版本在市场上同时存在25MHz HSE 晶振与以往版本一致与8MHz 晶振两种变体。购买时必须仔细确认版本并阅读晶振上的丝印标记否则可能烧录错误的固件导致无法启动时钟树配置依赖 HSE 频率。各版本的核心差异归纳如下v3.1当前版本带用户按键SW接 PA0Flash 走硬件 SPI1 外设MISO 为 PA6支持 25MHz 或 8MHz HSE。v2.0改动最大的一版——SPI Flash 的 MISO 引脚从 PA6 改到了 PB4因此 Flash 的访问不再完全落在硬件 SPI1 引脚上需要启用软 SPIsoft-spi支持由于 PB4 同时是 SPI3_MISOv2.0 在使用 Flash 时SPI3 不可用。v1.3最初版本顶部没有用户按键仅提供BOOT0与NRST两个开关分别用于进入 bootloader 与复位Flash 同样走硬件 SPI1MISO 为 PA6。上述差异在源码中有直接印证。板级 Flash 后端 ports/stm32/boards/WEACT_F411_BLACKPILL/bdev.c 中按编译宏WEACT_F411_V20分支实现v2.0 使用mp_soft_spi_obj_t软件 SPI 驱动polarity0、phase0而 v1.3/v3.1 使用spi_obj[0]即 SPI1硬件外设波特率 25MHz、8 位、MSB 先行。这正解释了为什么文档强调 v2.0 需要 soft-spi 支持而 v1.3/v3.1 与硬件 SPI 外设兼容。对应地ports/stm32/boards/WEACT_F411_BLACKPILL/mpconfigboard.h 中根据WEACT_F411_V13 / WEACT_F411_V20宏选择FLASH_MISO_V13 / FLASH_MISO_V20 / FLASH_MISO_V31引脚而用户按键也仅在非 v1.3 编译下启用#if WEACT_F411_V13 #define MICROPY_HW_HAS_SWITCH (0) #else #define MICROPY_HW_HAS_SWITCH (1) #define MICROPY_HW_USRSW_PIN (pyb_pin_SW) #define MICROPY_HW_USRSW_PULL (GPIO_PULLUP) #define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_FALLING) #define MICROPY_HW_USRSW_PRESSED (0) #endif引脚冲突SPI Flash 与 GPIO 排针共用引脚板载 SPI Flash 的焊盘引脚与两侧 GPIO 排针直接连通因此当 Flash 芯片被焊接并启用后相关引脚不能另作他用。文档给出的约束如下PA4、PA5、PA7所有版本均被 SPI1 占用分别作为FLASH_CS、FLASH_SCK、FLASH_MOSI。PA6在 v1.3 与 v3.1 上作为FLASH_MISO。PB4在 v2.0 上作为FLASH_MISO因此 v2.0 启用 Flash 后 SPI3 不可用PB4 与 SPI3_MISO 冲突。v3.1 的 PB4 已知问题即使 MISO 已改回 PA6有用户反馈当 Flash 芯片存在时 PB4 作为普通输入不可靠。规避方法在使用 PB4 之前先将其配置为输出并驱动为低电平。完整的引脚分配记录在 ports/stm32/boards/WEACT_F411_BLACKPILL/pins.csv 中其中以-前缀标注的引脚为复用了板载外设SWD、USB、OSC32、SPI Flash的信号例如LED_BLUE,PC13 SW,PA0 -SWDIO,PA13 -SWCLK,PA14 -USB_DM,PA11 -USB_DP,PA12 -FLASH_CS,PA4 -FLASH_SCK,PA5 -FLASH_MOSI,PA7 -FLASH_MISO_V13,PA6 -FLASH_MISO_V20,PB4 -FLASH_MISO_V31,PA6在动手设计电路或接线前应核对 pins.csv确保不与板载外设的复用引脚冲突。板级外设默认配置速览除了 Flash 相关配置mpconfigboard.h还给出了该板在 MicroPython 中的默认外设映射可供 REPL 编程时直接参考时钟MICROPY_HW_CLK_PLLM与 HSE 频率一致、PLLN192、PLLPDIV2、PLLQ4最终 CPU 主频为96MHzRTC 使用 LSEMICROPY_HW_RTC_USE_LSE1。UART REPLUART1TXPA9, RXPA10波特率115200MICROPY_HW_UART_REPL_BAUD。I2CI2C1B6/B7、I2C2B10/B9、I2C3A8/B8。SPISPI1A4/A5/A6/A7默认预留给 Flash、SPI2B12/B13/B14/B15、SPI3A15/B3/B4/B5v2.0 启用 Flash 时不可用。LED蓝色 LED 接 PC13低电平点亮MICROPY_HW_LED_ON(pin) mp_hal_pin_low(pin)。用户按键PA0上拉、下降沿触发v1.3 无。当启用外部 Flash 时mpconfigboard.h会通过MICROPY_HW_SPI_IS_RESERVED(id) (id 1)保留 SPI1 总线并关闭内部 Flash 文件系统MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE0同时启用 Flash 缓存MICROPY_HW_SPIFLASH_ENABLE_CACHE1若未启用 Flash默认则改用 STM32 内部 Flash 承载文件系统。这解释了「Flash 芯片是否存在」会直接改变文件系统的存放介质。定制构建为你的板子定制固件如果购买的是未焊 Flash 的板子用户可自行焊接任意容量的 SPI Flash 芯片。大多数 SO-8 封装的 SPI Flash 品牌兼容但部分品牌协议略有差异可能无法开箱即用地被 MicroPython 识别文档明确说明品牌兼容性不在本文档讨论范围内。焊好 Flash 后需要用构建参数指定 Flash 容量。构建成功后SPI Flash 将作为FAT/LFS 主文件系统使用该板默认启用 LFS2MICROPY_VFS_LFS2 1见 mpconfigboard.mk。基础构建命令文档给出的三个典型构建命令如下均在仓库根目录执行v3.1 / 25MHz默认版本16MiB Flashmake -C ports/stm32 BOARDWEACT_F411_BLACKPILL SPI_FLASH_SIZE_MB16v3.1 / 8MHz4MiB Flashmake -C ports/stm32 BOARDWEACT_F411_BLACKPILL BOARD_VARIANTV31_XTAL_8M SPI_FLASH_SIZE_MB4v1.32MiB Flash晶振手工换成 8MHzmake -C ports/stm32 BOARDWEACT_F411_BLACKPILL BOARD_VARIANTV13 SPI_FLASH_SIZE_MB2 XTAL_FREQ_MHZ8构建参数与默认值从 ports/stm32/boards/WEACT_F411_BLACKPILL/mpconfigboard.mk 可以梳理出三个关键构建变量的默认值与行为变量默认值含义BOARD_VERSION31板级版本13 / 20 / 31决定引脚映射与软/硬 SPI 选择SPI_FLASH_SIZE_MB0SPI Flash 容量MB0 表示使用内部 Flash 文件系统XTAL_FREQ_MHZ25HSE 晶振频率MHz这三个变量会通过编译选项注入到板级头文件中CFLAGS -DWEACT_F411_V$(BOARD_VERSION)1 CFLAGS -DMICROPY_HW_SPIFLASH_SIZE_BYTES($(SPI_FLASH_SIZE_MB) * 1024 * 1024) CFLAGS -DMICROPY_HW_HSE_SPEED_MHZ($(XTAL_FREQ_MHZ))其中WEACT_F411_Vxx宏正是mpconfigboard.h与bdev.c中分支编译v1.3/v2.0/v3.1所依赖的开关MICROPY_HW_SPIFLASH_SIZE_BYTES决定 Flash 是否启用及容量MICROPY_HW_HSE_SPEED_MHZ直接参与 PLL 时钟树计算PLLM与 HSE 同频。因此晶振频率选错固件将无法正确起振运行。官方变体配置除了在命令行直接传参也可以直接使用官方预置变体定义于同目录下各mpconfigvariant_*.mk文件V13BOARD_VERSION13V13_FLASH_4MBOARD_VERSION13, SPI_FLASH_SIZE_MB4V20_FLASH_4MBOARD_VERSION20, SPI_FLASH_SIZE_MB4V31_FLASH_8MBOARD_VERSION31, SPI_FLASH_SIZE_MB8V31_XTAL_8MBOARD_VERSION31, XTAL_FREQ_MHZ8使用方式例如make -C ports/stm32 BOARDWEACT_F411_BLACKPILL BOARD_VARIANTV31_FLASH_8M从 mpconfigboard.mk 的构建逻辑看命令行变量会更新构建目录名BOARD_VERSION追加_Vxx、SPI_FLASH_SIZE_MB追加_FLASH_xM、XTAL_FREQ_MHZ追加_XTAL_xM变体文件中的设置在本文件之后被包含因此命令行显式传参的优先级更高可用于在官方变体基础上进一步覆盖。固件烧录烧录方式上该板与 MicroPython 其他 STM32 板卡一致编译产物为 DFU 文件进入 DFU 模式按住 BOOT0 上电或复位至 bootloader可使用dfu-util等 DFU 工具烧录也可在 MicroPython REPL 中执行machine.bootloader()进入 DFU 模式。板级 JSON 引用的通用部署说明见 ports/stm32/boards/PYBV10/deploy.md。结语与深入路径WeAct F411 BlackPill 是 MicroPython 中支持较为完善的廉价 STM32 开发板其核心复杂度集中在「版本差异」与「Flash 引脚复用」上。构建固件时只需抓住三个变量——BOARD_VERSION、SPI_FLASH_SIZE_MB、XTAL_FREQ_MHZ——即可为手中任意变体生成匹配固件。如需继续深入可依次阅读以下仓库文件板级文档ports/stm32/boards/WEACT_F411_BLACKPILL/board.md硬件宏定义ports/stm32/boards/WEACT_F411_BLACKPILL/mpconfigboard.h构建变量与变体ports/stm32/boards/WEACT_F411_BLACKPILL/mpconfigboard.mk 及同目录mpconfigvariant_*.mkFlash 后端实现ports/stm32/boards/WEACT_F411_BLACKPILL/bdev.c引脚复用表ports/stm32/boards/WEACT_F411_BLACKPILL/pins.csv赞分享嵌入式语言运行时编程语言解释器编译器物联网系统编程【免费下载链接】micropythonMicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems项目地址https://gitcode.com/gh_mirrors/mi/micropython点击查看免费下载相关推荐RIOT 操作系统 Blackpill STM32F103CB 开发板支持128 KiB Flash 变体、构建配置与烧录实战RIOT 操作系统 Blackpill STM32F103CB 开发板支持128 KiB Flash 变体、构建配置与烧录实战 本文围绕 RIOT 中 bla物联网嵌入式操作系统实时系统MicroPython mimxrt.Flash 指南访问 i.MX RT 板载 SPI Flash 与自定义文件系统MicroPython mimxrt.Flash 指南访问 i.MX RT 板载 SPI Flash 与自定义文件系统 本指南围绕 MicroPython m嵌入式语言运行时编程语言解释器编译器物联网系统编程RIOT 中 Blackpill STM32F103C8 开发板支持板级配置、外设映射与烧录实战RIOT 中 Blackpill STM32F103C8 开发板支持板级配置、外设映射与烧录实战 本文围绕 RIOT 操作系统中 blackpill stm3物联网嵌入式操作系统实时系统上一篇PyWxDump 被移除微信聊天记录解密导出工具下架事件完整说明下一篇uni-app离线缓存终极指南无网络时的完美应用体验 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考