近日有客户反馈,使用基于 STM32L496 的 Nucleo 板的 LPUART 做打印输出时,电脑端始终没法出现任何 信息。根据该开发板使用手册说明,外设 LPUART 的 TX/RX 脚【PG7/PG8】默认与开发板 STLINK 部分的 VCP 端口相连,这样做可以省去飞线的麻烦,更不需要外接 USB-UART 转换器件。' M- K. _' t1 K( N; r+ r* k + D6 Z' O$ H% ~7 s+ `6 U. S' h 客户的 LPUART 相关代码是基于该 Nucleo 板的 cube 库例程修改而成。9 H5 a1 B6 ?; G 8 X) b/ L* ^% S7 c6 @ 从芯片数据手册我们可以得知 LPUART 的通信口可以复用到多个端口,如:PA2,PA3/PB11,PB10/PC1, PC0/PG7,PG8。上述 CUBE 库 LPUART 例程里的通信口用的 GPIO 是 PB10/PB11。% }: A0 i. @. ^7 p: {3 y y1 U+ k 先基于例程配置使用 PB10/PB11 通信口做打印输出。用飞线接到 STM32L496 的 Nucleo 板 STLINK 端的 VCP 接口,输出正常。说明 STLINK 端的 VCP 端口、LPUART 外设以及 PC 端 VCP 驱动的安装都是正常的。$ M) k4 ~/ n7 a% R/ i+ R 将 LPUART 通信口调整为 PG7,PG8,并做相关复用功能、GPIO 配置的修改,可是 PC 端根本看不到任何打 印信息。即使用示波器直接测试 LPUART 输出脚 PG7 也毫无动静。难道 PG7,PG8 有什么特别的地方? 查看手册! L8 i7 H2 R. V0 ?% {; w 查看手册可得知,端口 PG[15:2]的供电由 VDDIO2 负责。现在需要用它,VDDIO2 脚应接上相关电源。 - a: U: M. I) c 通过查看 NUCLEO 板原理图可知,VDDIO2 已经与 VDD 相连了。 / U5 o' q- L" t8 c 那软件上还需要添加些什么配置呢?因为要操作 VDDIO2 域,电源接口时钟需要使能。另外,还要对一个跟 VDDIO2 供电有效的寄存器位【IOSV】进行置位,申明 VDDIO2 域可以工作了。: y; Q. h" _ ~9 J4 X' P. J # N5 U. {7 I( o5 ^ HAL_PWREx_EnableVddIO2(); // IOSV@ PWR_CR2 …… ①5 N2 R. E1 z1 E8 d' |1 K3 n$ p' w- C ( p* ]/ ^; X/ {: t __HAL_RCC_PWR_CLK_ENABLE(); // PWREN@ RCC_APB1ENR1…… ②" r6 o8 e6 U8 @. S. R( j( G6 Q 5 I4 J$ Y4 N- f( H5 X% S+ L" F 将上面的第一句代码插入到例程中 HAL_UART_MspInit()函数里,将第二句代码添加到SystemClock_Config()即可。然后编译调试,输出正常,问题基本了结。/ d' x! K% [/ n : ]9 W1 O% m- o+ u" a9 S m5 z * m$ q6 y0 s9 S* }3 u5 o ... 了解更多,请下载后阅读# K+ Z% \$ M7 r8 f: e+ G- h ! f4 \/ B4 P- l+ S' L 下载地址1>> 下载地址2>> 更多实战经验>> 8 G( x1 r6 G/ ]3 [5 I& ] % E& g6 r9 W! p1 ]; n4 B" y |