单片机:STM32F407
开发板:DMF407电机开发板
平台:keil V5.31
HSE 为8MHZ
HSI为16MHZ
原理图:

配置:
#define USART_TX_GPIO_PORT GPIOB
#define USART_TX_GPIO_PIN GPIO_PIN_6
#define USART_TX_GPIO_AF GPIO_AF7_USART1
#define USART_TX_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0) /* 发送引脚时钟使能 */
#define USART_RX_GPIO_PORT GPIOB
#define USART_RX_GPIO_PIN GPIO_PIN_7
#define USART_RX_GPIO_AF GPIO_AF7_USART1
#define USART_RX_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0) /* 接收引脚时钟使能 */
#define USART_UX USART1
#define USART_UX_IRQn USART1_IRQn
#define USART_UX_IRQHandler USART1_IRQHandler
#define USART_UX_CLK_ENABLE() do{ __HAL_RCC_USART1_CLK_ENABLE(); }while(0) /* USART1 时钟使能 */
主函数:
uint8_t g_usart_tx_buf[8];
int main(void)
{
uint8_t len;
uint16_t times = 0;
HAL_Init(); /* 初始化HAL库 */
sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */
delay_init(168); /* 延时初始化 */
usart_init(9600); /* 串口初始化为115200 */
led_init(); /* 初始化LED */
while(1)
{
g_usart_tx_buf[0]=1;
g_usart_tx_buf[1]=2;
g_usart_tx_buf[2]=3;
g_usart_tx_buf[3]=4;
g_usart_tx_buf[4]=5;
g_usart_tx_buf[5]=6;
g_usart_tx_buf[6]=7;
g_usart_tx_buf[7]=8;
HAL_UART_Transmit(&g_uart1_handle, (uint8_t*)g_usart_tx_buf, 8, 1000); /*发送接收到的数据*/
while(__HAL_UART_GET_FLAG(&g_uart1_handle, UART_FLAG_TC) != SET); /*等待发送结束*/
delay_ms(500);
}
}
测试结果:

数据线:

需要注意的是,通过TypeC接口直接用数据线接PCUSB口接可以,如果用串口线,接收不到数据,或只能接收到CH340C的输入端数据。
另外通过这根数据线,可以给单片机供电,正常工作。