STM32学习笔记——中断

目录

一、中断概述                                          

1、中断系统

2、EXTI

二、外部中断相关寄存器        

1、EXTI_IMR  (External Interrupt/Event Controller_Interrupt Mask Register) 中断屏蔽寄存器

2、EXTI_EMR (External Interrupt/Event Controller_Event Mask Register) 事件屏蔽寄存器

3、EXTI_RTSR (External Interrupt/Event Controller_Rising Trigger Selection Register) 上升沿触发选择寄存器

4、EXTI_FTSR (External Interrupt/Event Controller_Falling Trigger Selection Register) 下降沿触发选择寄存器

5、EXTI_SWIER (External Interrupt/Event Controller_Software Interrupt Event Register) 软件中断事件寄存器

  6、EXTI_PR (External Interrupt/Event Controller_Pending Register) 挂起寄存器

三、外部中断配置


一、中断概述                                          

       “STM32的中断数量繁多,为了方便开发者,厂商建立了强大而又边界的中断控制工具——NVIC (Nested Vectored Interrupt Controller) 嵌套向量中断控制器。”

1、中断系统

      中断可分为可屏蔽中断和不可屏蔽中断,二者都属于外部中断,不同的是不可屏蔽中断一旦提出请求 ,CPU必须无条件响应;而对于可屏蔽中断请求,CPU可以响应也可以不响应。各个中断是有优先级的,多个中断源同时申请中断时,CPU会根据优先级的顺序选择中断。

        

图1.1 中断嵌套 

        中断嵌套发生在CPU执行中断程序过程中又有更高抢占优先级的中断程序申请中断。


*优先级分组:抢占优先级高的可以中断嵌套;响应优先级高的可以优先排队;抢占优先级和响应优先级都一样的按中断号排队。


2、EXTI

        EXTI(External interrupt/event controller)外部中断/事件控制器,是NVIC中的一员。负债管理映射到GPIO引脚上的外部中断以及片内几个集成外设的中断(PVD,RTC alarm,USB wakeup,ethernet wakeup)以及软件中断,其输出最终被映射到NVIC的相应通道。

        触发响应的方式有中断响应和事件响应。中断响应很好理解,就是引脚电平变化触发中断;事件响应不会触发中断,而是触发别的外设响应,如ADC,DMA等,是外设之间的联合工作。

图2.1 时钟树(局部)      

 

图2.2  外部中断/事件控制器(EXTI)框图

        图1.2右下角的“输入线”,即信号输入口,可以将输入线设置为任意一个GPIO口,信号从这里进入。从整体来看,输入的信号最终有两个去向。一是到NVIC中断控制器,二是到脉冲发生器。

        详细来说,信号先经过边缘检测电路,至于是选择上升沿触发选择寄存器还是选择下降沿触发选择寄存器,由用户自行配置。若检测达到信号突变,则输出有效信号“1”,反之输出无效信号“0”。

        之后信号遇到一个或门,该或门有两个信号源,只要有一个信号源满足条件,或门就会产生有效信号给后面的电路。再一次说明了中断可以用软件触发,即使电平并没有变化。

图2.3 与或非门符号

        在经过或门后,信号兵分两路。这两个与门相当于开关,通过将寄存器的相应位配置为0,用户可以控制信号具体从哪一端流出。请求挂起寄存器相当于图1.1中的断点。

        产生中断是将信号传入NVIC控制器,进而运行中断服务函数,这属于软件级;而事件则是产生相应脉冲,而后这个脉冲给其他外设功能使用,是电路上的信号传输,属于硬件级。


*图2.2的/20表示有20个通道。 

*可以设置仅上升沿触发(低→高)、仅下降沿触发(高→低)和上升沿下降沿都触发,除此之外还支持软件中断。同一个GPIO_Pin?不可同时触发中断(例如GPIOA_Pin1和GPIOB_Pin1不可同时触发中断,原因如图)。

图2.4 

AFIO负债复用功能引脚重映射和中断引脚选择。 

*说与门相当于开关是因为:1&0=0,1&1=1;0&0=0,0&1=0。


二、外部中断相关寄存器        

1、EXTI_IMR  (External Interrupt/Event Controller_Interrupt Mask Register) 中断屏蔽寄存器

2、EXTI_EMR (External Interrupt/Event Controller_Event Mask Register) 事件屏蔽寄存器

3、EXTI_RTSR (External Interrupt/Event Controller_Rising Trigger Selection Register) 上升沿触发选择寄存器

4、EXTI_FTSR (External Interrupt/Event Controller_Falling Trigger Selection Register) 下降沿触发选择寄存器

5、EXTI_SWIER (External Interrupt/Event Controller_Software Interrupt Event Register) 软件中断事件寄存器

  6、EXTI_PR (External Interrupt/Event Controller_Pending Register) 挂起寄存器

三、外部中断配置

        开启时钟→初始化I/O口→I/O口映射中断线→中断线配置→中断配置→中断服务函数

若文章内容出现错误,恳请各位批评指正,感激不尽!

  • 35
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据引用内容,STM32C8T6是一款通用增强型的48脚单片机,具有64K闪存和LQFP封装。它适用于工业级温度范围-40~85度。下面是一些关于STM32C8T6学习笔记: 1. 学习资料:可以从ST官方网站下载STM32C8T6的数据手册和参考手册,这些手册包含了该单片机的详细信息和使用方法。 2. 开发环境:为了开始学习STM32C8T6,你需要安装相应的开发环境。ST官方提供了一款免费的集成开发环境(IDE)——STM32CubeIDE,它可以帮助你进行代码编写、调试和下载。 3. 编程语言:STM32C8T6可以使用多种编程语言进行开发,包括C语言和汇编语言。C语言是最常用的编程语言,它可以通过STM32CubeIDE进行编写和调试。 4. 引脚配置:在使用STM32C8T6之前,你需要了解每个引脚的功能和配置。数据手册中有一张引脚功能表,可以帮助你了解每个引脚的用途和配置方法。 5. 时钟配置:STM32C8T6具有多个时钟源和时钟分频器,你需要根据自己的需求配置正确的时钟。时钟配置对于外设的正常工作非常重要。 6. 中断和定时器:STM32C8T6支持中断和定时器功能,这些功能可以帮助你实现各种任务和功能。你可以通过配置中断和定时器来实现外设的响应和定时操作。 7. 外设驱动:STM32C8T6具有丰富的外设,包括GPIO、UART、SPI、I2C等。你可以根据自己的需求选择合适的外设,并学习如何配置和驱动这些外设。 8. 调试和下载:在开发过程中,你可以使用STM32CubeIDE提供的调试功能来调试你的代码。一旦代码调试完成,你可以使用ST-Link或其他下载器将代码下载到STM32C8T6上运行。 希望以上笔记对你学习STM32C8T6有所帮助!如果你有任何进一步的问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值