STM32-F1学习系列(9):中断

398 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

中断

  • M3内核支持256个中断,16个内核中断和240个外部中断
  • STM32-F103中实现了76个中断通道,16个内核中断和60个可屏蔽中断
  • STM32-F107中实现了84个中断通道,16个内核中断和68个可屏蔽中断

NVIC

  • NVIC 英文全称是 Nested Vectored Interrupt Controller,它属于 M3 内核的一个外设,控制着芯片的中断相关功能。
  • ST 公司的 STM32F103 芯片内 部中断数量就是 NVIC 裁剪后的结果
  • core_cm3.h文件内定义了NVIC结构体

配置中断

每个中断通道有中断优先级控制字节(8bit),STM32F103只使用高4位,数值越小,优先级越高。

  • 抢占优先级
  • 相应优先级

配置用的寄存器

  • ISER 是中断使能寄存器
  • ICER 是中断清除寄存器
  • IP 是中断优先级寄存器

配置步骤

  • 使能某个外设的中断
    • misc.h中定义了NVIC_InitTypeDef
  • 设置中断优先级分组
  • 编写中断服务函数:注意需要和启动文件内的函数名保持一致

EXTI

STM32F10x 外部中断/事件控制器(EXTI)包含多达 20 个用于产生事件/中 断请求的边沿检测器。

  • EXTI 的每根输入线都可单独进行配置,以选择类型(中 断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)
  • 可独 立地被屏蔽。

STM32F103只有19个,在中文手册可以找到中断向量对应其它产品

中断最终会有两个流向

  • 软件:NVIC中断控制器->中断函数
  • 硬件:脉冲发生器->其它外设

EXTI 供外部 IO 口使用的中断线有 16 根,GPIOA-G共用中断线,需要使用AFIO外部中断配置寄存器进行选择中断线。