待分类·

星允派(NEBULA PI) ---- 功能与稳定性测试(一)

hizeero984

hizeero984

43 2

1.点亮 LED 灯

(1)效果展示

(a)点亮 LED1 和 LED2

(b)LED1 闪烁

(2)Bug

(a)程序下载失败,驱动错误

选择第一个工程文件,目标很明确:点亮第一颗 LED 灯。信心满满地直接编译下载,编译一次通过,正当我以为要见证“光明时刻”——结果下载到开发板时居然失败了!报错信息让我百思不得其解,一度怀疑人生。

求助 AI 分析,它信誓旦旦地说是硬件连接的问题。于是我认真检查了所有接线和跳线帽,反复确认,没发现任何异常……这时候的我,仿佛陷入某种电子玄学。

直到我仔细翻阅工程文件附的具体教程,才发现之前忽略了一个关键步骤:还要配置 STM32CubeMX 软件! 难道失败的根本原因在这?先别猜,动手试试看吧。

// 报错信息
Uploading .pio\\build\\rymcu\_nebulapi\_f103ve\\firmware.elf 
xPack Open On-Chip Debugger 0.12.0-01004-g9ea7f3d64-dirty (2023-01-30-15:04) 
Licensed under GNU GPL v2 
For bug reports, read         
    http://openocd.org/doc/doxygen/bugs.html 
debug\_level: 1  
swd 
Error: unable to find a matching CMSIS-DAP device 
\*\* OpenOCD init failed \*\* 
shutdown command invoked  
\*\*\* [upload] Error 1 =========================================== [FAILED] Took 3.47 seconds ===========================================

在经历了无数次尝试和摸索之后,终于揪出了问题的元凶——原来是驱动没有安装成功! 在我电脑的设备管理器里,WCH CMSIS-DAP 这个设备赫然显示着一个黄叹号警告。点开一看,果然是驱动安装失败。也就是说,电脑压根没认出这个“WCH CMSIS-DAP”设备,更别提为它配上合适的驱动了。结果就是,系统识别不了,PlatformIO 也找不到它、用不了它——一切突然说得通了。

解决办法:使用 Zadig 工具安装 WinUSB/Libusb 驱动,步骤如下:

1.下载Zadig
- 访问Zadig官方主页:https://zadig.akeo.ie/
- 下载并运行最新版本的Zadig。
  2.操作步骤
- 连接WCH CMSIS-DAP调试器到电脑。
- 打开Zadig。
- 在菜单栏点击 Options -> List All Devices
- 在中间的下拉列表框中,找到你的 WCH CMSIS-DAP 设备。如果列表很长,请仔细查找。
- 选中它之后,右侧的驱动程序区域会显示当前无效的驱动(可能是usbccgp.sys或NONE等其他)。
- 在右侧的绿色箭头处,选择要安装的驱动。强烈建议选择 WinUSB 或 libusb-win32。WinUSB 是微软自家的,兼容性好;libusb-win32 也被广泛支持。两者对于CMSIS-DAP来说通常都可以工作。
- 点击 Replace Driver 或 Install Driver 按钮。
- 等待提示安装成功。
  3.验证
- 完成后,拔掉并重新插入调试器。
- 再次打开设备管理器,发现设备可能被归类到通用串行总线设备,并且那个黄色的警告符号消失了。
- 回到VS Code和PlatformIO,再次尝试上传或调试,错误解决了。

(3)建议

1.教程中文件夹不明确 自动生成的文件中有两个 src,虽然一个 src 点开没有任何东西,但是还是会有点不清晰

2.时钟配置

(1)效果展示

(a)LED1 以一秒的周期循环亮灭

但有个小疑问:为啥每次刷新代码后,LED2 都一直倔强地常亮呢?难道是第一个点亮 LED 的测试代码残留在作祟?

(2)Bug

(a)STM32CubeMX 生成代码时警告,不知道会不会有影响,先直接生成看一下,生成后能正常看到 LED1 以一秒的周期循环亮灭,所以应该没有影响。

3.按键

(1)效果展示

(a)按下 K1,LED1 亮,松开 K1,LED1 灭

(b)按下 K2,LED2 亮,松开 K2,LED2 灭。还是前面第2小节时钟配置中的问题,不过这回换成 LED1 常亮了(思考.jpg)

4.串口通信

(1)效果展示

(a)程序下载后,按 RST 按键接收到数据

(b)通过 printf 打印字符串,按 RST 按键收到数据

(c)串口接收不定长数据并打印

(2)Bug

(a)电脑的设备管理器和 RYCOM 串口助手突然无法识别开发板的端口了。我不确定是在程序下载之后才出现这个问题,还是下载之前就已经存在——毕竟我是在下载完串口测试程序之后才发现无法识别的。

尝试将开发板上的串口 BT0 跳线帽改为连接 BT01 和 3.3V 引脚,但似乎没什么改善。

随后我反复在设备管理器中进行检测:将开发板连接电脑后,设备管理器可以识别出一个“通用串行总线设备”,但并没有正确显示为 USB 串口。于是我干脆删除了该设备下之前安装的“WCH CMSIS-DAP”相关驱动,结果端口又重新被识别出来了——但一旦尝试下载程序,却又会出现之前的报错……

最终发现,只要在识别出端口的情况下重新使用 zadig 软件安装“WCH CMSIS-DAP”设备驱动,并且在整个过程中不断开开发板与电脑的连接,就可以实现“WCH CMSIS-DAP”驱动与串口端口同时存在,顺利进入调试状态。

5.外部中断

(1)效果展示

(a)按下 K2,通过串口打印信息,但是 LED1 并没有翻转。

(b)按下 K2,LED2 翻转。教程中说明的是按下 K2 控制 LED1,但我们实际操作时发现 LED1 并没有反应。经过排查,原来在第3小节中 K2 实际绑定的是 LED2。于是对症下药,修改代码如下:

//原来代码     
//翻转 LED1     
HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);    
  
//修改后的代码    
//翻转 LED2     
HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);

修改后能看到按下K2,LED2翻转的效果:

(2)建议

(a)错别字嘻嘻😁

(b)翻转小灯错误

6.RGB 彩灯

(1)效果展示

(a)RGB 彩灯正在红、绿、蓝三种颜色之间循环切换,呈现出绚丽的色彩变化效果

7.I2C 通信读写 E2PROM

(1)效果展示

(a)通过 I2C 总线读写外部 E2PROM 存储器 AT24C02 数据

8.SPI 读写外部 FLASH

(1)效果展示

(a)SPI FLASH 测试成功

(2)建议

(a)8.2创建项目的第二张图片指导缺少步骤三的指引

(b)建议标注驱动文件来源

相关文章

优先推荐同专题、同标签和同作者内容,补足热门文章。

评论 2

登录 后参与评论

评论 2

Hugh
Hugh9月4日 07:24

👍 👍 👍

Hugh
Hugh9月8日 09:37

按住ModeS按键,重新上电,下载器模式可以切换成HID协议,无需安装驱动,相比winusb模式下载速度慢点,优点是win,mac都无需安装驱动使用。😁