STM32CubeMAX——USART

首先开启RCC:
在这里插入图片描述
然后:开启串口,参数默认:波特率115200,8位数据位,1位停止位,无校验位
在这里插入图片描述
然后:配置时钟
在这里插入图片描述
最后:生成代码配置
在这里插入图片描述
在这里插入图片描述
生成代码:
在这里插入图片描述
Keil5中:添加代码:
在usart.c中添加
第一步:

/* USER CODE BEGIN 1 */
int fputc(int ch,FILE *f)
{
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
	return ch;
}
/* USER CODE END 1 */

并添加头文件#include<stdio.h>
第二步:
然后尝试用串口打印字符串
在main.c中

/* USER CODE BEGIN 2 */
	printf("printf(CubeMAX Pro Test:)
");
/* USER CODE END 2 */

烧写验证

第三步:
串口打印冲串口发送的数据
首先:打开串口中断(其他操作一样)
在这里插入图片描述
然后:在main.c开头定义两个数组

/* USER CODE BEGIN PV */
uint8_t RxBuf[20];
uint8_t TxBuf[]="这是要发送的字符串:
";
/* USER CODE END PV */

然后:HAL_UART_Receive_IT我理解是相当于开启接收中断,接收够10字符就触发接收中断

/* USER CODE BEGIN 2 */
	printf("printf(CubeMAX Pro Test:)
");
	//HAL_UART_Transmit_IT(&huart1, (uint8_t *)TxBuf, sizeof(TxBuf));
	HAL_UART_Transmit(&huart1, (uint8_t *)&TxBuf, 10, 0xFFFF);
	HAL_UART_Receive_IT(&huart1, (uint8_t *)RxBuf, 10);
  /* USER CODE END 2 */

最后在main.c中重构接收完成中断的回调函数

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  /* Prevent unused argument(s) compilation warning */
  UNUSED(huart);
  HAL_UART_Transmit(&huart1, (uint8_t *)&RxBuf, 10, 0xFFFF);
  /* NOTE : This function should not be modified, when the callback is needed,
            the HAL_UART_RxCpltCallback can be implemented in the user file.
   */
}
/* USER CODE END 4 */

最后:下载验证

原文地址:https://www.cnblogs.com/hhsxy/p/14018402.html