本文已参与「新人创作礼」活动,一起开启掘金创作之路。
中断
- 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外部中断配置寄存器进行选择中断线。