stm32中断

一、中断原理

1.数据传输方式
在这里插入图片描述
2.全过程
在这里插入图片描述
3.执行过程在这里插入图片描述
4.作用

STM32的中断有两种优先级:1、抢占式优先级 2、响应式优先级。

  • 抢占式优先级的特点是:具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。
  • 响应式优先级的特点是:(1)当两个中断源的抢占式优先级相同时,高响应优先级的中断优先被响应,这两个中断将没有嵌套关系;(2)当两个中断源的抢占式优先级

在这里插入图片描述

5.优先级
在这里插入图片描述

6.中断响应过程
在这里插入图片描述

二、 CubeMX中断控制LED灯

(一)项目生成

1.新建项目File-New Project
在这里插入图片描述
2.选择芯片为STM32F103C8
3.选择PA4设置为GPIO_Output输出模式,PB9设置为GPIO_EXTI9中断模式

在这里插入图片描述
在这里插入图片描述

4.PB9GPIO mode在这里插入图片描述

5.PA4引脚配置,默认设置为High,处于熄灭状态
在这里插入图片描述

6.RCC配置时钟和SYS配置
在这里插入图片描述
在这里插入图片描述

7,开启中断
在这里插入图片描述
8.时钟树设置
在这里插入图片描述
9.项目命名位置选择
在这里插入图片描述
在这里插入图片描述

10.用keil5打开
在这里插入图片描述

(二)代码修改

在main.c中加入以下代码

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    /* Prevent unused argument(s) compilation warning */
    HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_4);  //翻转电平
    /* NOTE: This function Should not be modified, when the callback is needed,
             the HAL_GPIO_EXTI_Callback could be implemented in the user file
     */
}

(三)编译运行

1.烧录boot0置1,boot1置0
在这里插入图片描述

2.运行结果boot0置0,boot1置1

在这里插入图片描述

三、HAL库中断串口通信

(一)新建项目

1.大致步骤与上面相似,重复二(一)项目生成1.2步。选择USART1为异步通信模式:

在这里插入图片描述
2.RCC配置时钟和SYS配置
在这里插入图片描述
在这里插入图片描述
3.配置串口

在这里插入图片描述

4.使能中断
在这里插入图片描述
5.重复二(一)项目生成8.9.10步。用keil5打开项目
在这里插入图片描述

(二)代码

  1. 打开main.c文件,在文件中定义缓冲区大小:
#define LENGTH 10   // 接收缓冲区大小

在这里插入图片描述

2.定义缓冲区和标志位:

uint8_t RxBuffer[LENGTH];   // 接收缓冲区
uint8_t Rxflag = 0;    // 标志位,0为接收未完成,1为接

在这里插入图片描述

3.在while循环中发送成功信息和接收到的信息:

if (Rxflag == 1){ // 若数据接收完成
	Rxflag = 0;  // 清除标志位
	HAL_UART_Transmit(&huart1, (uint8_t *)data, 18, 0xFFFF);  // 接收成功信息
	// 发送接收到的字符
	HAL_UART_Transmit_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);
}

在这里插入图片描述

4.在main.c中定义回调函数

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
	if (huart->Instance == USART1){
		Rxflag = 1;  // 设置标志位为1
		HAL_UART_Receive_IT(&huart1, (uint8_t*)&RxBuffer, LENGTH); // 使能接收中断
	}
}

在这里插入图片描述

(三)烧录运行结果

1.烧录
在这里插入图片描述

2.运行结果
在这里插入图片描述

注意:烧录前将板子上的 BOOT0 置1,BOOT1 置0;烧录后,将板子 BOOT0 置0,BOOT1 置0,再上电才可连接串口。

四、总结

STM32中断的核心是NVIC,其中重点是嵌套,有了嵌套就有了优先级。如果有低响应优先级中断正在执行,那么高响应优先级的中断要等待已被响应的低响应优先级的中断执行结束后才能得到响应。当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定处理顺序。这就是我本次实验对中断的一个理解概况。

五、参考资料

STM32F103中断
STM32之中断方式实现串口通信

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值