STM32CubeMX方面设置
进去时默认都要先配置RCC和SYS的设置,接口方面的设置由于使用到了USART,因此无需在图形化界面进行接口设置,直接在左边的connectivity标签中直接对USART1进行设置设置,把运行模式调成异步模式即可,其他没有特别需求不需要调整
随后调整好文件生成位置生成项目即可
main.c
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
uint8_t buffer[100];
uint16_t size = 0;
/* USER CODE END 0 */ /* USER CODE BEGIN 2 */
// 发送一个字符串
HAL_UART_Transmit(&huart1, "hello, world!\n", 14, 1000);
/* USER CODE END 2 */ while (1)
{
// // 接收一个定长字符串,再原样发回去
// if (HAL_UART_Receive(&huart1, buffer, 10, 1000) == HAL_OK)
// {
// HAL_UART_Transmit(&huart1, buffer, 10, 1000);
// }
// 接收一个不定长字符串,再原样发回去
if (HAL_UARTEx_ReceiveToIdle(&huart1, buffer, 100, &size, HAL_MAX_DELAY) == HAL_OK)
{
HAL_UART_Transmit(&huart1, buffer, size, HAL_MAX_DELAY)
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}HAL_UART_Receive :接收一个(UART_HandleTypeDef huart, uint8_t pData, uint8_t Size, uint8_t Timeout)类型的数据
HAL_UART_Transmit :接收一个(UART_HandleTypeDef huart, const uint8_t pData, uint8_t Size, uint8_t Timeout)类型的数据
HAL_UARTEx_ReceiveToIdle :接收一个(UART_HandleTypeDef huart, uint8_t pData, uint16_t Size, uint8_t *RxLen, uint8_t Timeout)类型的数据
pData:是要传输的文本数据/接收数据储存的位置
transmit和receive的size是接收和发送数据的长度,固定,也就是说只能发送和接收那么长的数据
receivetoidle的size是接收数据的最大长度
*RxLen:是接收的数据的长度接收完数据会将数据返回到给的值中
delay:最长相应时间,超时则直接跳出