【STM32-HAL库】中断使用 cubeMX keil5

一、简单介绍

串口中断是微控制器中串行通信接口(UART)的一种工作模式,它允许微控制器在执行其他任务的同时监控串口数据。当串口接收到数据或者发送数据完成时,会触发一个中断请求,微控制器会暂停当前的任务,转而执行一个预先定义好的中断服务程序(ISR)来处理这个中断。
在串口中断模式下,微控制器不需要不断地轮询串口状态来检查是否有数据到达,这样可以节省CPU资源,并且可以保证数据处理的实时性。当数据到达时,串口硬件会自动通知CPU,CPU响应中断后,执行中断服务程序来处理接收到的数据或者发送数据的相关操作。


串口中断通常包括以下几种类型:
1. 接收中断:当串口接收到数据时触发,允许微控制器读取数据并进行处理。
2. 发送中断:当串口完成数据的发送时触发,通常用于通知微控制器可以发送下一批数据。
3. 传输结束中断:当串口完成一个数据帧的发送时触发,用于单帧传输的场合。
4. 错误中断:当串口检测到错误(如帧错误、奇偶校验错误等)时触发,允许微控制器进行错误处理。


串口中断的使用可以提高嵌入式系统的效率和响应速度,是处理串行通信的常用方法。在设计中断服务程序时,需要注意中断服务程序的执行时间,避免过长的影响到其他任务的处理,同时也需要合理配置中断优先级,确保系统能够正确、高效地处理多个中断。
串口中断的优点如下:

1.实时性:中断接收允许微控制器在数据到达时立即进行处理,而不需要轮询检查数据是否到达,这样可以保证数据处理的实时性。

2.效率:使用中断接收可以释放CPU资源,不需要不断地检查串口状态,CPU可以执行其他任务,从而提高整体系统的效率。

3.可靠性:中断接收可以减少数据丢失的可能性,因为数据在到达时就会被处理,而不需要等待CPU的轮询。

4.灵活性:中断服务函数(ISR)可以根据需要对收到的数据进行处理,例如直接存储、解析或者触发其他事件。

5.模块化:通过中断接收,可以将串口通信与其他模块(如数据处理、用户界面等)更好地分离,便于代码的模块化和维护。

6.支持多任务:在支持多任务的操作系统环境中,中断接收可以与任务调度器配合使用,使得多个任务可以同时运行,提高了系统的并发性能。

7.简化编程:使用中断接收可以简化程序的逻辑结构,不需要编写复杂的轮询循环,使得代码更加清晰易懂。

8.响应速度:中断机制可以提供快速的响应速度,尤其适合于对实时性要求高的应用场景,如工业控制、通信系统等。

二、生成工程

1、工程基本配置

新建工程教程icon-default.png?t=N7T8https://blog.csdn.net/qq_39150957/article/details/136637881?spm=1001.2014.3001.5502重定向串口icon-default.png?t=N7T8https://blog.csdn.net/qq_39150957/article/details/136638229?spm=1001.2014.3001.5501

三、开启NVIC

四、代码

在main.c中加入以下代码:



/* USER CODE BEGIN PV */

uint8_t a[10];
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if(huart->Instance==USART1)
	{


        //接收到的数据存在变量a中,只需要对变量a做处理即可



        //开启下一次的中断接收
		HAL_UART_Receive_IT(&huart1, a, sizeof(a));
	}
}



/* USER CODE END PV */

main函数:


  /* USER CODE BEGIN 2 */

  //开启中断接收

  HAL_UART_Receive_IT(&huart1, a, sizeof(a));


  /* USER CODE END 2 */

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值