我正尝试通过 PuTTY 实现STM32F429与电脑之间的基础 USB_FS 通信,以下是我的 PuTTY 连接配置参数。
主函数如下
#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 上的错误提示如下:
调试器激活前的原始设备管理器状态:
之后变为
COM7 已连接到调试器。通过 COM8 接收 USB 数据。
|
|