[STM32F4] STM32CubeIDE 的调试器操作似乎会占用串口。

[复制链接]
420|0
地瓜patch 发表于 2025-11-9 12:58 | 显示全部楼层 |阅读模式


我正尝试通过 PuTTY 实现STM32F429与电脑之间的基础 USB_FS 通信,以下是我的 PuTTY 连接配置参数。

75672691011b0a4915.png
主函数如下

#include "main.h"
#include "i2c.h"
#include "ltdc.h"
#include "quadspi.h"
#include "sai.h"
#include "spdifrx.h"
#include "usb_device.h"
#include "gpio.h"
#include "fmc.h"

uint8_t buffer[64];

void SystemClock_Config(void);
void PeriphCommonClock_Config(void);

int main(void){
  HAL_Init();

  SystemClock_Config();

  PeriphCommonClock_Config();

  MX_GPIO_Init();
  MX_FMC_Init();
  MX_I2C1_Init();
  MX_LTDC_Init();
  MX_QUADSPI_Init();
  MX_SAI1_Init();
  MX_SAI2_Init();
  MX_SPDIFRX_Init();
  MX_USB_DEVICE_Init();

  while (1)  {
          HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);
          uint8_t message[] = "Help! I'm stuck in the CCCFP machine!\r\n";
          CDC_Transmit_FS(message, sizeof(message));
          HAL_Delay (1000);
  }
}


USB_DEVICE\App\usbd_cdc_if.c 中usb函数如下
extern uint8_t buffer[64];

static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len){
  USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
  USBD_CDC_ReceivePacket(&hUsbDeviceFS);

  memset (buffer, '\0', 64);  // clear the buffer
  uint8_t len = (uint8_t)*Len;
  memcpy(buffer, Buf, len);  // copy the data to the buffer
  memset(Buf, '\0', len);   // clear the Buf also

  return (USBD_OK);
}

uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len){
  uint8_t result = USBD_OK;
  USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData;
  if (hcdc->TxState != 0){
    return USBD_BUSY;
  }
  USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len);
  result = USBD_CDC_TransmitPacket(&hUsbDeviceFS);
  return result;
}


每次启动调试器后,设备管理器就立即检测不到 COM8 端口PuTTY 上的错误提示如下:
79966691012419bbf8.png




调试器激活前的原始设备管理器状态:

79875691012519708d.png
之后变为
8611869101262ad034.png


COM7 已连接到调试器。通过 COM8 接收 USB 数据。





您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

2060

主题

15598

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部