MicroPython 中的 WeAct F411 BlackPill 板级支持:版本差异、SPI Flash 定制与构建指南
嵌入式语言运行时编程语言解释器编译器物联网系统编程【免费下载链接】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),仅供参考

相关新闻

EMQX Redis Bridge 实战指南:用规则引擎把 IoT 数据写入 Redis

EMQX Redis Bridge 实战指南:用规则引擎把 IoT 数据写入 Redis

EMQX Redis Bridge 实战指南:用规则引擎把 IoT 数据写入 Redis 【免费下载链接】emqx The most scalable and reliable MQTT broker for AI, IoT, IIoT and connected vehicles 项目地址: https://gitcode.com/gh_mirrors/em/emqx EMQX 的 emqx_bridge_redis…

2026/9/21 15:30:36 阅读更多 →
VitePress 本地搜索自定义分词器(tokenize)实战:让 hash-probe 与连字符关键词保持完整匹配

VitePress 本地搜索自定义分词器(tokenize)实战:让 hash-probe 与连字符关键词保持完整匹配

VitePress 本地搜索自定义分词器(tokenize)实战:让 #hash-probe 与连字符关键词保持完整匹配 【免费下载链接】vitepress Vite & Vue powered static site generator. 项目地址: https://gitcode.com/gh_mirrors/vi/vitepress 本地…

2026/9/21 15:30:36 阅读更多 →
Bit CLI 技能包(Claude Code Skill)深度指南:让 AI Agent 精确执行 Bit 命令的渐进式命令参考

Bit CLI 技能包(Claude Code Skill)深度指南:让 AI Agent 精确执行 Bit 命令的渐进式命令参考

开发工具CLI构建工具MCP 服务 【免费下载链接】bit AI-powered development workspaces with reusable components, architectural clarity and zero overhead. 项目地址: https://gitcode.com/gh_mirrors/bi/bit 点击查看 免费下载 本指南围绕 Bit 开源仓库中的 c…

2026/9/21 15:30:36 阅读更多 →

最新新闻

跨声速飞行器抖振载荷动态辨识技术研究

跨声速飞行器抖振载荷动态辨识技术研究

1. 项目背景与核心挑战跨声速飞行器在接近音速飞行时,机翼表面会出现复杂的激波现象。当激波位置与机翼结构振动模态耦合时,就会引发危险的抖振问题。这种现象轻则影响飞行品质,重则导致结构疲劳甚至解体。西北工业大学马启悦、高传强团队的最…

2026/9/21 15:58:03 阅读更多 →
构建 Chrome 应用版代码编辑器:mini-code-edit 示例深度解析(CodeMirror + chrome.fileSystem)

构建 Chrome 应用版代码编辑器:mini-code-edit 示例深度解析(CodeMirror + chrome.fileSystem)

构建 Chrome 应用版代码编辑器:mini-code-edit 示例深度解析(CodeMirror chrome.fileSystem) 【免费下载链接】chrome-extensions-samples Chrome Extensions Samples 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-extensions-sam…

2026/9/21 15:58:03 阅读更多 →
Vue 3核心特性与性能优化实战指南

Vue 3核心特性与性能优化实战指南

1. Vue 3 核心特性快速上手Vue 3已经彻底改变了我们构建前端应用的方式。作为一名长期使用Vue的开发者,我发现很多同行虽然已经升级到Vue 3,但对其新特性的理解还停留在表面。今天我就来分享几个在实际项目中特别实用但容易被忽视的Vue 3知识点&#xff…

2026/9/21 15:58:03 阅读更多 →
Lightweight Charts 插件开发:Canvas 像素完美渲染(Pixel Perfect Rendering)最佳实践

Lightweight Charts 插件开发:Canvas 像素完美渲染(Pixel Perfect Rendering)最佳实践

前端图表库金融科技数据可视化 【免费下载链接】lightweight-charts Performant financial charts built with HTML5 canvas 项目地址: https://gitcode.com/gh_mirrors/li/lightweight-charts 点击查看 免费下载 在基于 Lightweight Charts 开发自定义系列&#x…

2026/9/21 15:58:03 阅读更多 →
Claude Code 配 TaoToken:Windows 下快捷键和命令这样生效

Claude Code 配 TaoToken:Windows 下快捷键和命令这样生效

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 15:58:03 阅读更多 →
JVM垃圾回收机制与性能调优实战

JVM垃圾回收机制与性能调优实战

1. JVM垃圾回收机制深度解析在Java虚拟机(JVM)的内存管理体系中,垃圾回收(GC)机制扮演着至关重要的角色。作为一名长期从事JVM性能调优的工程师,我经常遇到各种因GC配置不当导致的性能问题。今天我将系统性地剖析JVM垃圾回收的核心算法与主流收集器实现&…

2026/9/21 15:57:02 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →