【STM32+HAL+Proteus】系列学习教程---串口USART(中断方式)

本文详细介绍了如何使用STM32CubeMX配置UART中断方式,实现在PC上位机与开发板之间的数据通信,包括设置中断触发条件、接收数组和标志位、回调函数的编写,以及实际应用和仿真过程。

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

实现目标

1、利用UART实现上位机PC与下位机开发板之间的数据通信

2、学会STM32CubeMX软件关于UART 中断方式的配置

3、具体目标:1、开发板将接收到的上位机数据反发送回上位机串口调试助手。


一、中断方式简介

1、中断方式

          中断就是在寄存器有一个字节数据的时候触发一次中断,而不用一直扫描寄存器状态,节约了系统资源。例如串口接收24字节数据,HAL_UART_Receive_IT(&huart1, (uint8_t *)&Rx, 1) 意思就是每来一个字节数据中断一次,中断之后就进入回调函数进行处理,此时Rx是一个uint8_t的字节数据。HAL_UART_Receive(&huart1, (uint8_t *)Rx, 24)意思是没来一个字节数据中断一次,等接收到24个字节数据之后再统一进入回调函数之后进行处理,此时Rx是一个uint8_t的数组字节数据。

        缺点:虽然解决了轮询不断扫描寄存器状态的缺点,但CPU接收数据会触发中断,对于实时要求高的场所,不适用。

二、原理图设计

三、STM32CubeMX 配置

1.USART1  中断方式配置

四、程序设计

1、定义接收数组和一个接收标志位

/* USER CODE BEGIN PV */

uint8_t Rxbuf[2];
uint8_t RxFlag = 0;

/* USER CODE END PV */

2、开启接收中断

  /* USER CODE BEGIN 2 */

	HAL_UART_Receive_IT(&huart1, (uint8_t *)Rxbuf, 2);    // 使能串口接收中断

  /* USER CODE END 2 */

3、功能程序设计

 while(1)
{
   if (RxFlag)
   {
       RxFlag = 0;
        //发送
        HAL_UART_Transmit(&huart1,Rxbuf,2,100);
   }
}

4、回调函数

/* USER CODE BEGIN 4 */

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if (huart->Instance == USART1)
    {
        RxFlag = 1;
        HAL_UART_Receive_IT(&huart1, (uint8_t *)Rxbuf, 2);    // 使能串口接收中断
    }
}

/* USER CODE END 4 */
 

五、实验现象

六、仿真实现


总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

面包板扎

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

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

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

打赏作者

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

抵扣说明:

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

余额充值