Hitomi22 发表于 2025-7-6 08:26

用STM32CubeIDE进行串行通信

我想将数据从STM32发送到PC。在其他MCU中,我经常使用Serial.write()STM 32中是否有类似的函数可以直接用?

LOVEEVER 发表于 2025-7-29 23:43

HAL库就是可以直接使用的

tabmone 发表于 2025-8-4 11:01

可以通过 HAL 库或 LL 库实现类似功能。

primojones 发表于 2025-8-4 12:55

若发送字符串,需添加结束符(如\r\n),方便PC端识别数据包。

phoenixwhite 发表于 2025-8-4 13:48

直接向串口发送数据,函数会阻塞直到数据全部发送完成

tabmone 发表于 2025-8-4 15:49

/ 发送单个字节(类似 Arduino 的 Serial.write(byte))
void MySerialWriteByte(uint8_t byte) {
    HAL_UART_Transmit(&huart1, &byte, 1, HAL_MAX_DELAY);
}

// 发送字符串(类似 Arduino 的 Serial.write(str))
void MySerialWriteString(const char* str) {
    while (*str) {
      HAL_UART_Transmit(&huart1, (uint8_t*)str++, 1, HAL_MAX_DELAY);
    }
}

deliahouse887 发表于 2025-8-4 18:26

无论是 HAL 库还是标准外设库,都提供了直接发送单个字节的函数

wengh2016 发表于 2025-8-5 12:23

使用HAL_UART_Transmit函数

jackcat 发表于 2025-8-5 13:26

使用DMA控制器直接搬运数据到串口发送寄存器

ingramward 发表于 2025-8-5 15:10

没有直接的 Serial.write() 函数,但可以使用类似的功能来实现数据的发送。

mikewalpole 发表于 2025-8-7 09:33

可以使用HAL库中的HAL_UART_Transmit函数来发送数据到PC,类似于其他MCU中的Serial.write()函数。

geraldbetty 发表于 2025-8-8 11:01

   HAL_UART_Transmit(&huart1, (uint8_t*)"Hello", 5, 100); // 发送5字节数据,超时100ms

lzbf 发表于 2025-8-8 12:20

HAL_UART_Transmit函数用于通过UART接口发送数据。

tabmone 发表于 2025-8-8 17:03

使用 HAL_UART_Transmit() 函数发送数据。

macpherson 发表于 2025-8-8 20:45

HAL_UART_Transmit()。

jonas222 发表于 2025-8-11 16:36

void Serial_Write(UART_HandleTypeDef *huart, uint8_t *data, uint16_t len) {
    HAL_UART_Transmit(huart, data, len, 100);
}

louliana 发表于 2025-8-11 23:24


void USART_SendChar(char c) {
    USART_SendData(USART1, c);
}
页: [1]
查看完整版本: 用STM32CubeIDE进行串行通信