梦想机器人实验室:第五节EXTI

文章介绍了STM32的EXTI外部中断机制,包括中断分类、NVIC中断管理和优先级设置。讨论了AFIO库在引脚重映射中的应用,EXTI库和NVIC库的常用函数,并通过实例展示了对射式红外传感器和旋转编码器的中断处理。文中还提到了中断在处理紧急事件和提高系统效率中的重要性,并给出了中断处理过程的详细步骤。然而,作者认为中断的实际应用场景不够清晰,主要与TIM定时器和其他外设结合使用。
摘要由CSDN通过智能技术生成

第四章 EXTI外部中断

4.1 EXTI中断理论结构

STM32中断分类:EXTI、TIM、ADC、USART、SPI、IIC、RTC

中断管理:NVIC

中断优先级:

请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述

4.2 模块扩展:旋转编码器

请添加图片描述

请添加图片描述

请添加图片描述

4.3 相关外设标准库介绍

4.3.1 AFIO库函数【与GPIO同库】

本部分使用AFIO进行引脚重映射,在此对AFIO库函数常用函数做一介绍
请添加图片描述

4.3.2 EXTI库函数【EXTI时钟默认开启】

常用函数以及使用位置:

请添加图片描述

4.3.3 NVIC库函数【时钟默认开】~内核misc.h

请添加图片描述
①工程中只用一次

4.3.4 使用注意

请添加图片描述

4.4 标准库操作

4.4.1 对射式红外传感器计次【单个中断】

请添加图片描述

4.4.2 旋转编码器【多个中断】

请添加图片描述
请添加图片描述

注意:NVIC的通道选择时,除了各种芯片的通道表外,在所有芯片通道表的上方还有一栏通用通道表【所有芯片都相同具有】

4.4.3 问题归纳

问题1:数据跳变 大间隔跳变
问题原因:对于类开关传感器,一定要消抖。但是在中断中无法使用正常滴答定时器延时函数消抖,因此可以通过软件消抖函数来消抖

问题2:减法部分没办法用/不灵————————应该是做工问题
2022年11月9日21:07:29 NO 逻辑问题

48行GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
49行GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1);

不用 | 同时选择就正常,用|同时就出错
2022年11月10日10点14分 @叶公好龙. 你那个|不是所有的地方都可以按照你想的那样去用,恰巧你这个地方就不行。 你把source0和source1或起来,那就是source1。你再去看看gpio引脚的宏定义,gpio引脚或起来是没有问题的

保险起见 所有除GPIO的都分开进行

问题3:for(i = time;i > 0;)//不能写 i>=0,因为强制转换 i变成了uint32_t型——————强制转换存疑:被赋值方和赋值方哪个被强转?

A:待填充

知识点:uint不能与0比较

4.5 中断的重要性

在处理器中,中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行。

中断在计算机多任务处理,尤其是即时系统中尤为重要,如uCOS和FreeRTOS等。

中断是用以提高计算机工作效率、增强计算机功能的一项重要技术。最初引入硬件中断,只是出于性能上的考量。如果计算机系统没有中断,则处理器与外部设备通信时,它必须在向该设备发出指令后进行忙等待(Busy waiting),反复轮询该设备是否完成了动作并返回结果。这就造成了大量处理器周期被浪费。引入中断以后,当处理器发出设备请求后就可以立即返回以处理其他任务,而当设备完成动作后,发送中断信号给处理器,后者就可以再回过头获取处理结果。这样,在设备进行处理的周期内,处理器可以执行其他一些有意义的工作,而只付出一些很小的切换所引发的时间代价。后用于CPU外部与内部紧急事件的处理、机器故障的处理、时间控制等多个方面,并产生通过软件方式进入中断处理(软中断)的概念。

4.5.1 STM32中断处理过程

进入中断前

1.处理器自动保存现场到堆栈里

2.{PC, xPSR, R0-R3, R12, LR}

3.一旦入栈结束,ISR便可开始执行

4.晚到的中断会重新取ISR地址,但无需再次保存现场

退出中断后

  1. 中断前的现场被自动从堆栈中恢复

  2. 一旦出栈完成,继续执行被中断打断的指令

  3. 出栈的过程也可被打断,使得随时可以响应新的中断, 而不再进行

    4.现场保存

4.5.2 中断的使用方式

参考文章:(10条消息) STM32开发必备知识篇:串口DMA空闲中断_串口空闲中断_青青豌豆的博客-CSDN博客

4.5.3 疑惑

笔者对于中断的重要性以及实际实用性的了解并未深究,中断在笔者目前的学习中很少使用,不像GPIO、定时器、串口等等部分对其应用场景的明确示例,但是中断的应用场景目前并未明朗,查询资料后只找到4.5.2中的串口DMA空闲中断一种实际使用示例。

2023年4月17日15点45分补充:TIM定时器是基于中断发展而来的,中断更多的是与其他外设组合使用。中断功能更像是一种其他外设的条件开关、自动开关

本文为作者对于《STM32入门教程-2023持续更新中》-江协科技 视频教程的学习总结以及个人答疑的笔记。
免费分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值