nandwrite 写 NAND 的几个容易忽略的细节
记录用 nandwrite 往 NAND 闪存写数据时 -p 和 -s 的真实含义,以及操作前容易忽略的坑。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-07-25 12:00:41 Arduino IDE STM32 ST-LINK V2 驱动问题 嵌入式
用 Arduino IDE 给 STM32 板子烧程序,插上 ST-LINK V2 之后 IDE 里既看不到开发板也看不到 COM 口,这种事出现过不止一次。下面记一下我平时是怎么排查的,基本能覆盖大多数情况。
先确认驱动到底装没装上。最直接的方式是打开 Windows 设备管理器,展开“通用串行总线设备”或者“端口 (COM 和 LPT)”,看有没有“STMicroelectronics ST-LINK Virtual COM Port”或者“STM32 STLink”之类的条目。如果带了黄色感叹号,那驱动肯定有问题。没带感叹号也不代表一定 ok,有些情况驱动装了但绑不上。
还有一个办法是用命令行查,在 cmd 里跑:
wmic path Win32_PnPEntity get Caption
然后在输出里搜 st-link、stlink 或 virtual com port 之类的字样。能找到对应的描述字符串就说明系统层面已经认到了设备。
如果身边有 STM32CubeProgrammer 或者 ST-LINK Utility,也可以顺手打开试一下。
这两个工具能正常连接目标板、读取到芯片信息的话,那驱动基本没问题,问题大概率出在 Arduino IDE 这边。
驱动确认没问题之后,再看 IDE 和连接。USB 线偶尔是罪魁祸首,有些线只能充电不能传数据,换一根短点、粗点的线试试。
ST-LINK V2 的 USB 接口有时也会接触不良,重新插拔换个口说不定就好了。
Arduino IDE 识别 COM 口的逻辑有时候比较迟钝,插上 ST-LINK 之后在“工具 - 端口”里不出现,可以先重启一下 IDE。
还不行就试试断开 ST-LINK,再连上,然后手动点一下端口菜单里的“刷新”或者干脆重新打开那个下拉列表——有时它不会自动刷。
在“工具 - 端口”里如果出现了新的 COM 口但认不到板子,得检查两个地方:一是开发板型号选对了没有,二是上传方法选的是否为“ST-LINK/V2”。有些 STM32 支持包在选错上传方式的时候连 COM 口都出不来,或者出来了也报错。
另外,Arduino IDE 里安装的 STM32 支持包本身也要是能用的版本。
过旧的支持包对某些板子或烧录器支持不全,可以试试在“开发板管理器”里更新到最新版,或者卸了重装一遍。
设备管理器里的“端口 (COM 和 LPT)”分类也值得多看两眼。有时候驱动装了,但 COM 口没有自动生成,需要右键点设备并选择“更新驱动程序”,或者去 ST 官网下最新的 ST-LINK 驱动重新安一遍。装驱动过程中如果有安全软件拦截,记得临时放行一下。
如果上面这些走完还是不行,可以再用 CubeProgrammer 或 ST-LINK Utility 交叉确认一下硬件本身有没有问题。
偶尔 ST-LINK V2 固件太老,也可以用 ST-LINK Utility 给它自己升个级。
额外提一句,COM 口不显示还有一种情况是 Windows 自动分配的端口号 Arduino IDE 没及时感知到,尤其是 COM 号比较大(比如 COM20 以上)的时候。
可以在设备管理器里强制给它换一个低编号的 COM 口,不过操作前先确认那个端口号没被占用。
拿个简单的点灯程序测一下是否真的通了:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
上传前确认好板型、上传方式、端口,一般这样走一遍就能定位到问题在哪。
如果还不行,那可能得去社区或者找 ST 技术支持了,但以我的经验,八成是驱动或者线的问题。
记录用 nandwrite 往 NAND 闪存写数据时 -p 和 -s 的真实含义,以及操作前容易忽略的坑。
用 setIntegrationTime 设置 TCS34725 颜色传感器的积分时间时,灵敏度和响应速度的权衡、常见的宏定义,以及一些容易忽略的细节。