蓝桥杯stm32 USART 串口接收数据

本文介绍了在蓝桥杯STM32项目中如何设置USART中断接收数据,包括创建CubeMX工程,中断接收函数的实现,串口接收回调函数的自定义,以及如何处理固定长度和不定长数据的接收问题。实验中通过中断接收十六进制数据并控制LED状态,解析了接收错误的原因及解决方法。
摘要由CSDN通过智能技术生成

文章代码使用 HAL 库。


前言

上篇文章是 串口的发送数据,这篇文章接着上次的 讲 串口的接受数据

一、创建 CubeMX 工程:

创建工程的 前面几个步骤 都在 这篇文章中详细讲解:蓝桥杯 stm32 USART 串口发送数据

关于 串口的接受数据 我们只需要再 多一个步骤:
使能中断
在这里插入图片描述

二、 中断接收数据 函数:

HAL_UART_Receive_IT (UART_HandleTypeDef *huart, uint8_t *pData, 
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好,关于stm32 usart2串口接收数据的问题,您可以参考以下步骤: 1. 首先,需要初始化USART2串口,配置波特率、数据位、停止位等参数。可以使用STM32 HAL库提供的函数进行初始化,例如: ``` USART_HandleTypeDef huart2; huart2.Instance = USART2; huart2.Init.BaudRate = 115200; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart2) != HAL_OK) { Error_Handler(); } ``` 2. 接着,需要开启USART2的中断,以便在接收到数据时触发中断服务程序。可以使用HAL库提供的函数进行中断配置,例如: ``` HAL_NVIC_SetPriority(USART2_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USART2_IRQn); __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); ``` 其中,USART2_IRQn是USART2的中断号,UART_IT_RXNE表示接收到数据触发中断。 3. 在中断服务程序中,可以读取接收缓冲区中的数据,例如: ``` void USART2_IRQHandler(void) { uint32_t isrflags = READ_REG(huart2.Instance->SR); uint32_t cr1its = READ_REG(huart2.Instance->CR1); if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET)) { uint8_t data = (uint8_t)(huart2.Instance->DR & 0x00FF); // 处理接收到的数据 } } ``` 其中,USART_SR_RXNE表示接收缓冲区非空标志位,USART_CR1_RXNEIE表示接收缓冲区非空中断使能位,huart2.Instance->DR表示USART2的数据寄存器。 以上就是关于stm32 usart2串口接收数据的基本步骤,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果罐子♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值