STM32CubeMX学习笔记——STM32H743串口

本文详细介绍了使用STM32CubeMX工具进行STM32H743微控制器串口配置的过程,包括Pinout、ClockConfiguration、Configuration界面的设置,以及USART、NVIC的具体配置方法。通过实例代码展示了如何实现串口接收中断,并讨论了中断响应流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Github

https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/STM32H7/Class02_USART

STM32CubeMX配置

STM32CubeMX版本:4.27.0
配置流程:
Pinout界面选择并开启串口外设
Clock Configuration配置时钟树
Configuration界面配置Connectivity与System
生成工程

Pinout配置

在这里插入图片描述
该界面用于配置串口与映射引脚

Clock Configuration配置

在这里插入图片描述
用于配置系统时钟与外设的时钟

Configuration

在这里插入图片描述
左侧主要系统功能的开启,或中间软件层功能的开启(如:RTOS、JPEG解码器,文件系统等)
右侧是系统及外设模块的具体配置

USART

在这里插入图片描述
主要配置波特率、停止位、校验位(注:波特率的可选范围与其时钟频率相关)
在这里插入图片描述
是否开启中断
在这里插入图片描述
映射的IO配置

NVIC

在这里插入图片描述
设置串口的中断向量组、中断的抢占优先级、子优先级
在这里插入图片描述
生成USART1的中断代码

代码部分

中断响应流程:

//stm32h7xx_it.c
void USART1_IRQHandler(void) 
//stm32h7xx_hal_uart.c
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
//stm32h7xx_hal_uart.c
static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart)
//stm32h7xx_hal_msp.c
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

main.c

每次需要执行

HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

函数才能正常产生RX中断。并且每次接收到uint16_t Size个字节后会自动关闭。需要重新执行此函数

/* USER CODE BEGIN 0 */
unsigned char buffer[1024*10];
/* USER CODE END 0 */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();

  /* Initialize interrupts */
  MX_NVIC_Init();
  /* USER CODE BEGIN 2 */
  HAL_UART_Receive_IT(&huart1, buffer, 1);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	HAL_Delay(200);
	HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
	if(huart1.RxState == HAL_UART_STATE_READY)
		HAL_UART_Receive_IT(&huart1, buffer, 1);

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}

stm32h7xx_it.c

/* USER CODE BEGIN 0 */
extern unsigned char buffer[];
/* USER CODE END 0 */
/* USER CODE BEGIN 1 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	HAL_UART_Transmit(huart,buffer,huart->RxXferSize,1000);
}
/* USER CODE END 1 */
### STM32CubeMX 学习教程和笔记 #### GPIO操作基础 对于初学者而言,了解如何通过STM32CubeMX配置通用输入输出端口(GPIO)是非常重要的。这不仅限于简单的高低电平控制,还包括更复杂的外设交互功能。例如,在GPIO输出方面,可以通过设置LED来创建跑马灯效果[^1];而在输入部分,则能实现外部中断触发以及按键消抖等功能。 #### 定时器应用实例 定时器是嵌入式系统中不可或缺的一部分。利用STM32CubeMX可以轻松完成基本的计数、延时任务,并进一步探索高级特性如PWM信号生成用于模拟呼吸灯光效。此外,还介绍了如何运用定时器中断机制提高程序响应速度与效率。 #### 串行通信接口实践指南 针对USART(Universal Synchronous/Asynchronous Receiver Transmitter),即通用同步异步接收发送器的学习材料也十分详尽。除了讲解标准的数据传输流程外,还有关于`printf()`函数重定向至UART的具体方法介绍。更重要的是,当涉及到大量数据交换场景时,DMA (Direct Memory Access) 技术的应用使得整个过程更加高效稳定。 #### 模拟量处理技术解析 ADC (Analog-to-Digital Converter,模数转换器) 和 DAC (Digital-to-Analog Converter, 数模转换器) 是两个非常实用的功能模块。前者允许设备感知外界连续变化的信息源,后者则负责将内部产生的离散数值映射回物理世界中的电信号形式。两者结合起来可以在不需要额外硬件支持的情况下构建简易测量仪器或控制系统。 #### I2C总线协议入门指导 I2C是一种广泛应用于各种传感器之间的两线制串行通讯方式。通过对EERPOM存储芯片AT24C02的操作练习,读者能够掌握发起读写请求的基本步骤;而后续章节里有关环境监测元件SHT20温度湿度采集的例子更是直观展示了实际项目里的应用场景。 #### 用户代码编写注意事项 值得注意的一点是在使用STM32CubeMX自动生成框架的基础上添加个人逻辑时需格外小心。任何位于特定标记之外编写的语句都可能在下一次更新过程中被覆盖掉。因此建议始终遵循官方推荐的最佳实践,即将新增内容放置于预定义区域内[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值