我一直在与这个问题作斗争一段时间。我有一个基于
STM32G05 的简单定制板。我正在使用 2 个 UART。其中一个我只用于串口调试。获取键盘输入(但不要使用它)并打印出调试数据。
另一个连接到不同的 MCPU。ESP32,特别是 ESP32-CAM。
当 ESP32-CAM 启动时,它会向串行端口发送一些诊断信息。
我的STM32看不到这个数据。
我可以使用 USB 串行端口(带腻子)并独立地与 STM32 和 ESP32
通信。但是,将 ESP32 TX 引脚连接到 STM32 RX 引脚根本没有给我任何数据。
我可以“接入”ESP32 TX 引脚并将其连接到 USB 串行端口 RX 引脚并在启动时查看数据,但 STM32 根本看不到它。我查看了示波器上的数据,逻辑电平是正确的。
我的代码很简单
- #include "main.h"
- extern UART_HandleTypeDef huart1;
- extern UART_HandleTypeDef huart2;
- uint8_t rx[6];
- uint8_t rx2[6];
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- if (huart->Instance == USART1) {
- serprintf("UA1: %cnr", rx[0]);
- HAL_UART_Receive_IT(&huart1, rx, 1);
- }
- else {
- serprintf("UA2: %cnr", rx2[0]);
- HAL_UART_Receive_IT(&huart2, rx2, 1);
- }
- if (rx[0] == 13) {
- serprintf("nr");
- }
- }
- void app_main(void)
- {
- HAL_StatusTypeDef status;
- serprintf("Starting...nr");
- HAL_UART_Receive_IT(&huart2, rx, 1);
- HAL_UART_Receive_IT(&huart1, rx2, 1);
- while (1) {
- }
- }
我已经尝试使用两个串行端口进行此操作,并且行为都遵循这两个端口。
但是,STM32
能够成功向 ESP32CAM 发送数据。它似乎无法接收它。