当前位置: 首页 > news >正文

中断相关知识

提示:文章

文章目录

  • 前言
  • 一、背景
  • 二、
    • 2.1
    • 2.2
  • 三、
    • 3.1
  • 总结

前言

前期疑问:
1、中断嵌套是什么?
2、为什么EXTI文章中,对按键中断向量需要配置。而串口配置接收中断的时候不需要配置中断向量?
简单搜了下百度,中断嵌套好像是在一个中断中再触发另一个中断。这样的话好像又涉及到知识盲区,先不管这个。

答:串口也是需要配置的,即在NVIC_InitType结构体中配置USART1中断源或者叫中断向量。但是实际上两者还是有区别。对于串口中断,包括配置PA9、PA10的GPIO口,然后配置中断分组和中断优先级,在配置中断优先级的时候就配置了中断向量和使能中断。最后就是配置USART,配置波特率和停止位和长度等信息,配置波特率就是串口独有的。
而按键EXTI在配置了GPIO口后,将GPIO口配置成浮空输入。再配置NVIC中的中断源后,两个按键配置两个中断源,然后就是配置具体是哪一个引脚,因为比如KEY1是PA0,使用的中断源是EXTI0中断源,但是实际EXTI0中断源对应Px0-Px15多个GPIO口(x为A…G),实际文章实例教程中是将EXTI_Init和GPIO_InitType写在一起的,我是觉得也可以分开写。
实例教程中GPIO和EXTI是在一个函数中配置的

本文目标:


一、背景

这个文章其中写的时间是在EXT文章后面的。而实际野火中中断文章是在EXTI文章前面的。之所以在这里EXTI文章是在这篇中断文章前面,是因为之前没有单独给中断新建一个文章。但是在后面看EXTI文章的时候,意识到还有不少中断的知识点不甚其解。比如EXTI配置外部中断的时候是要配置EXTI_InitType结构体,并且指定外部中断向量。还配置了NVIV_InitType结构体。关于上述知识点我还存在模糊理解,所以又回到中断文章重新看文章。
现在看完中断文章,对上述疑问有了些理解。下面解答上述的问题:

1、EXTI_InitType是什么?是配置外部中断的,里面涉及到指定中断向量是哪一个,然后需要在中断服务函数中实现功能,比如按键按下led灯亮。 另外还有配置是中断还是事件,按键就配置成中断。 另外还有配置是上升沿触发中断还是下降沿出发中断
2、NVIC是什么?是配置中断优先级的。里面有4个成员,一个是配置优先级分组,一个是…
上述的表述有问题,直到我开始整理NVIC的成员的时候我才意识到我的理解还是有遗漏,而且我还意识到之前疑问的一个地方。 因为NVIC_InitType成员中四个成员①中断源②抢占式优先级(主优先级)③子优先级④使能中断。然后就涉及到一个问题,串口中断并不是没有配置中断,而是配置了中断。然后我还有一个疑问,比如串口是PA9和PA10,是USART1中断,我配置成USART2中断可以吗?
3、NVIC_PriorityGroupConfig这个函数是配置中断分组的,一个可以分成5组,由4位寄存器配置。当抢占优先级为0位时,子优先级就为4位,所以抢占优先级为0,子优先级有0-15,一共16种优先级。到抢占优先级为4位时,子优先级就为0位,所以抢占优先级为0-15,一共16种优先级,子优先级为0种。这个寄存器是NVIC_IPRx寄存器,只使用了高4位 。文中提到优先级可以配置成0-255,这个是怎么算出来的。哦哦想了下可能是有8位,最大值就是256个

特别说明:
其中文中还有一个段落是特别说明,指出了只需要配置一次中断优先级分组就行了,如果多次配置,只取最后一次配置的。

二、

2.1

2.2

三、

3.1


总结

未完待续


文章转载自:

http://25TRgWCc.bnyLg.cn
http://K7xfVrAA.bnyLg.cn
http://u2yIO3Tw.bnyLg.cn
http://7QU6QlgT.bnyLg.cn
http://x49jYbYQ.bnyLg.cn
http://WeEptShp.bnyLg.cn
http://vajaltCv.bnyLg.cn
http://dgfLTebA.bnyLg.cn
http://f6w2W0fR.bnyLg.cn
http://HsaHzOmV.bnyLg.cn
http://IGTfRBTR.bnyLg.cn
http://wutBJQSQ.bnyLg.cn
http://cWYIPjE1.bnyLg.cn
http://85xyXHQf.bnyLg.cn
http://ChhfCG8V.bnyLg.cn
http://sNqRQSrx.bnyLg.cn
http://GOaNGEAM.bnyLg.cn
http://8cHpK5uo.bnyLg.cn
http://87aARH1W.bnyLg.cn
http://HR7bO4A0.bnyLg.cn
http://piZ7WApL.bnyLg.cn
http://Tcel6diG.bnyLg.cn
http://iCkSP6AS.bnyLg.cn
http://CISjDWSX.bnyLg.cn
http://LwqXqMs8.bnyLg.cn
http://5yKxeymz.bnyLg.cn
http://YNPgf4EU.bnyLg.cn
http://F2fbJsOk.bnyLg.cn
http://3GcpMyEq.bnyLg.cn
http://3qHxMCMi.bnyLg.cn
http://www.dtcms.com/a/235991.html

相关文章:

  • C语言的全称:(25/6/6)
  • python模块——tqdm
  • An improved YOLACT algorithm for instance segmentation of stacking parts
  • 双面沉金PCB应用:打造卓越电子设备的黄金工艺
  • 深入浅出:计算机网络体系结构——信息世界的“交通规则”
  • C语言速成15之告别变量碎片化:C 语言结构体如何让数据管理从混乱走向有序
  • MCP协议三种传输机制全解析
  • 在线OJ项目测试
  • C++.OpenGL (7/64)摄像机(Camera)
  • 云服务器厂商机房是什么
  • 玛哈特辊式矫平机:塑造金属平整的精密力量
  • U-Mail邮件加密,保障邮件系统信息安全
  • 5.1 HarmonyOS NEXT系统级性能调优:内核调度、I/O优化与多线程管理实战
  • LlamaIndex 工作流简介以及基础工作流
  • 开源语义分割工具箱mmsegmentation基于Lovedata数据集训练模型
  • x32dbg/x64dbg SwissArmyKnife 插件导入map文件不生效
  • 我用Amazon Q写了一个Docker客户端,并上架了懒猫微服商店
  • 动态IP与静态IP:数字世界的“变脸术”与“身份证”
  • 深入理解 Linux Kernel Panic:常见原因与实战分析
  • 网络库libhv介绍
  • systemback复制系统报错
  • 【Unity Shader编程】之让画面动起来
  • JVM虚拟机:内存结构、垃圾回收、性能优化
  • 深入理解Java单例模式:确保类只有一个实例
  • Java-IO流之打印流详解
  • MySQL基础(四)DML、数据表操作DDL操作
  • MAX3490
  • 关于双网卡优先级:有效跃点数的解析(设置值×2)
  • Levenberg-Marquardt算法详解和C++代码示例
  • 代驾数据库