首页 > 其他分享 >中断

中断

时间:2023-07-15 15:45:07浏览次数:29  
标签:HAL 中断 NVIC GPIO 优先级 EXTI

中断

概念

相当于你在打游戏但是老妈叫你去拖地,为了不被挨骂你得放下游戏去老实拖地,拖完地继续打游戏。。。(╥﹏╥…

用来干嘛?

  1. 实时控制:在确定时间内对相应事件作出反应。(温度监控)
  2. 故障处理:需要第一时间处理紧急情况。(机器卡住了)
  3. 数据传输:不知道什么时候数据来。(串口数据接收)

处理过程

GPIO(上拉/下拉/浮空)—GPIOXy→GPIOIy—EXTI—NVIC—CPU

NVIC

概念

嵌入向量中断控制器,属于内核(M3/4/7)

支持256个中断(16+240),256个优先级,允许裁剪。

STM32F103有10个内核中断,60个外部中断,16个中断优先级

中断服务函数:定义一块固定的内存,4字节对齐,存放各个终端服务函数程序的首地址;

中断向量表定义在启动文件,当发生中断,CPU会自动执行对应的终端服务函数。(.s)文件

寄存器介绍

Untitled.png

工作原理

SHPR右侧少了个箭头(内核中断优先级最低)

SHPR右侧少了个箭头(内核中断优先级最低)

中断优先级及其分组

  1. 抢占优先级
  2. 响应优先级(子优先级)
  3. 自然优先级:中断向量表里的优先级
    1. 数值越小,优先级越高

分组:

提示:一个工程一般只设置一次中断优先级分组。

Untitled

参考xx编程手册4.4.5节

怎么使用?

  1. 设置中断分组(SCB_AIRCR)
  2. 设置中断优先级IP(NVIC_IPRx)
  3. 使能中断(NVIC_ISERx)
*assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));   //判断形参是否有效
HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
									//中断号           抢占优先级                 响应优先级*

EXTI

概念

External interrupt/event Controller: 外部(扩展)中断控制器

包含20个产生事件/中断请求边沿检测器,即20条EXTI线(F1)

中断和事件的理解:

  • 中断:要进入NVIC,有相应的中断服务函数,需要CPU处理
  • 事件:不进入NVIC,仅用于内部硬件自动控制的,如:TIM、DMA、ADC。。

EXTI支持的外部中断/事件请求

Untitled

EXTI主要特性(F1/F4/F7系列

每条EXTI线都可以单独配置:选择类型(中断/事件)、触发方式(上升沿/下降沿/双边沿)、支持软件触发、开启/屏蔽、有无挂起状态位(中断)。

EXTI工作原理(F1/F4/F7

Untitled

  1. 边沿检测
  2. 软/硬件触发(或)
  3. 中断屏蔽/清除(与)
  4. 事件屏蔽(与)

了解寄存器:(见xx参考手册9.3

  • EXTI_FTSR
  • EXTI_RTSR
  • EXTI_IMR
  • EXTI_PR

[EXTI和IO映射的关系]

解决链接部分表格中与GPIO映射的关系

AFIO简介(F1)(xx参考手册8.4.3-8.4.6

Alternate Function IO,复用功能IO,用于重映射和外部中断映射配置

功能:

  1. 外部中断配置:APIO_EXTICR14,配置EXTI中断线015对应到哪个具体IO口
  2. 重映射配置:AFIO_MAPR,部分外设IO重映射配置
  3. 调试IO配置:AFIO_MAPR[26:24],配置JTAG/SWD的开关状态

相关文章

  • [笔记]组成原理_中央处理器_异常和中断、指令流水线
    异常和中断机制有关异常和中断的基本概念:由CPU内部产生的意外事件被称为异常,有些教材中也称为内中断;由来自CPU外部的设备向CPU发出的中断请求,被称为中断,通常用于信息的输入与输出。有些教材中也称为外中断。通常情况下,对异常和中断的具体处理过程,由操作系统(和驱动程序)完成。异......
  • 高性能网络SIG月度动态:virtio-net 支持动态中断调节,SMC v2 协议增加新扩展
    高性能网络SIG(SpecialInterestGroup):在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时代扮演者前所未有的重要角色。在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网......
  • 中断、主函数并发操作全局变量
    原子操作:指一系列操作不能被打断(并不是指一条指令)参考文章:文章1文章2文章3......
  • typec CC脚检测中断
    [TYPEC_ATTACH_DETACH_IRQ]={ .name ="typec-attach-detach", .handler =smblite_typec_attach_detach_irq_handler, .wake =true, },irqreturn_tsmblite_typec_attach_detach_irq_handler(intirq,void*data){structsmb_irq_da......
  • 中断子系统-1.中断相关结构体描述
    1.irq_desc数组位于include/linux/irqdesc.hstructirq_desc{ structirq_common_data irq_common_data; structirq_data irq_data; unsignedint__percpu *kstat_irqs; irq_flow_handler_t handle_irq; structirqaction *action; /*IRQactionlist*/ unsignedi......
  • 2023年7月5日,生产者消费者模型,线程的休眠、礼让、合并、中断、生命周期、守护线程
    线程复习1.线程的休眠需求:编写一个抽取学员回答问题的程序,要求倒数三秒后输出被抽中的学员姓名分析:1.创建String数组存放学员姓名2.利用随机数获取学员下标3.通过下标获取学员姓名4.倒计时3秒通过for循环使用Thread.sleep(1000)来实现,Thread.sleep(1000);此方法为静态......
  • RV1126按键中断驱动和应用调试
     本人使用的调试平台是荣品的rv1126开发板,最近在调试按键中断。经过查看原理图,发现竟然没有一个空闲的IO,所以使用UART1的RX作为按键中断引脚。    驱动部分:     因为UART1原先已经在设备树中已经有了定义,需要将kernel/arch/arm/boot/dts/rongpin/rv1126_11......
  • 设备驱动-10-异常中断引入
    1中断与异常CPU在运行的过程中,也会被各种“异常”打断。这些“异常”有:1.指令未定义2.指令、数据访问有问题SWI(软中断)快中断中断中断只是一种(一类)异常而已。导致中断发生的情况有很多,比如:按键定时器ADC转换完成UART发送完数据、收到数据这些众多的“中断源......
  • 解决yum update异常中断产生重复包、依赖冲突等问题
    前言事情的起因是执行了yumupdate后,嫌时间长,就手欠儿按了curl+c中断了更新,结果就导致了后面一些列问题问题问题一:Thereareunfinishedtransactionsremaining使用yum相关命令时,一直会有未完成事务的提醒,这时候我们需要完成这个事务。解决方法:使用yum-complete-trans......
  • 第014课 Jz2400_ARM异常与中断体系详解
    第001节_概念引入与处理流程取个场景解释中断。假设有个大房间里面有小房间,婴儿正在睡觉,他的妈妈在外面看书。问:这个母亲怎么才能知道这个小孩醒?过一会打开一次房门,看婴儿是否睡醒,让后接着看书一直等到婴儿发出声音以后再过去查看,期间都在读书第一种叫做查询方式:*优点:简单*缺......