使用STM32CubeMX对STM32F4进行串口配置

目录

  • [1. 配置](#1. 配置)
    • [1.1 Pin脚](#1.1 Pin脚)
    • [1.2 RCC开启外部晶振](#1.2 RCC开启外部晶振)
    • [1.3 时钟](#1.3 时钟)
    • [1.4 串口配置](#1.4 串口配置)
  • [2. 代码](#2. 代码)
    • [2.1 默认生成代码](#2.1 默认生成代码)
    • [2.1 开启串口中断函数](#2.1 开启串口中断函数)
    • [2.3 接收中断](#2.3 接收中断)
    • [2.4 接收回调函数](#2.4 接收回调函数)
    • [2.5 增加Printf 的使用](#2.5 增加Printf 的使用)

1. 配置

1.1 Pin脚

1.2 RCC开启外部晶振

1.3 时钟

外部使用8MHz晶振

开启内部16MHz晶振

使用锁相环

开启最高100MHz。

1.4 串口配置

串口1/2配置相同


2. 代码

2.1 默认生成代码

  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();

2.1 开启串口中断函数

添加在串口初始化之后

uint8_t aRxBuffer_1[1200]; //接收数据保存数组
HAL_UART_Receive_IT(&huart1,aRxBuffer_1,1);			// Enable the USART1 Interrupt

2.3 接收中断

在stm32f4xx_it.c中

void USART1_IRQHandler(void)
{
  /* USER CODE BEGIN USART1_IRQn 0 */

  /* USER CODE END USART1_IRQn 0 */
  HAL_UART_IRQHandler(&huart1);
  /* USER CODE BEGIN USART1_IRQn 1 */

  /* USER CODE END USART1_IRQn 1 */
}

2.4 接收回调函数

这个部分需要自己编辑

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if(huart->Instance == USART1)	// 判断串口号
	{
		HAL_UART_Transmit(&huart1,aRxBuffer1,1,100);	// 返回数据
		HAL_UART_Receive_IT(&huart1,aRxBuffer1,1);		// 使能串口1接收中断
	}
	if(huart->Instance == USART2)	// 判断串口号
	{
		HAL_UART_Transmit(&huart2,aRxBuffer2,1,100);	// 返回数据
		HAL_UART_Receive_IT(&huart2,aRxBuffer2,1);		// 使能串口1接收中断
	}
}

2.5 增加Printf 的使用

在usart.c中,添加代码,同时添加引用头文件,接下来 printf 即可使用,使用 printf 的地方,同样需要引用头文件

#include <stdio.h>

/* USER CODE BEGIN 1 */

int fputc(int ch, FILE *f)//printf
{
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1,0xffff);  //
	return (ch);
}

/* USER CODE END 1 */

/* USER CODE BEGIN 0 */
#include <stdio.h>
/* USER CODE END 0 */
相关推荐
scan12 小时前
单片机串口接收状态机STM32
stm32·单片机·串口·51·串口接收
Qingniu012 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
Mortal_hhh3 小时前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
深圳市青牛科技实业有限公司4 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比5 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie5 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
鹿屿二向箔5 小时前
STM32外设之SPI的介绍
stm32
西瓜籽@5 小时前
STM32——毕设基于单片机的多功能节能窗控制系统
stm32·单片机·课程设计
远翔调光芯片^138287988728 小时前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源
极客小张8 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩