- 开/关中断。
- 恢复中断。
- 中断使能。
- 中断屏蔽。
- 可选择系统管理的中断优先级。
硬件
1、外设,外部中断
2、中断控制器(Cortex-M 系列控制器NVIC),接收外部中断,然后发送中断信号给CPU
3、CPU,响应中断源请求,NVIC最多支持240个中断,每个中断最多256优先级
名词
中断号:使得计算机能够判断是哪个设备提出的中断请求的标志
中断请求:向 CPU 提出申请,临时征用,处理“紧急事件”
中断优先级:中断源分级
中断处理程序:
中断触发:中断源发送给CPU控制信号,并最终进入中断处理程序
中断触发类型:边沿触发、电平触发
中断向量:中断服务程序的入口地址
中断向量表:存储中断向量的存储区,中断向量与中断号对应,中断向量在中断向量
表中按照中断号顺序存储
临界段:不允许任何打断,关中断,运行,开中断
运行机制
- 保存当前处理机状态信息
- 载入异常或中断处理函数到 PC 寄存器
- 把控制权转交给处理函数并开始执行
- 当处理函数执行完成时,恢复处理器状态信
- 从异常或中断中返回到前一个程序执行点
中断延迟
指从硬件中断发生到开始执行中断处理程序第一条指令之间的这段时间。
中断管理
FreeRTOS不接管硬件中断,只支持简单的开关中断,用起来和裸机差不多;
需要自己配置中断、使能中断、编写中断函数;在中断服务函数中使用内核 IPC 通信机制,一般建议使用信号量、消息或事件标志组等标志事件的发生,将事件发布给处理任务,等退出中断后再由相关处理任务具体处理中断;
用户可以自定义配置 系统可管理的最高中断优先级的宏定义
/*用于配置内核中的basepri 寄存器*/
configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY
如上设置为5,中断优先级数值在 0、1、2、3、4 的这些中断是不受 FreeRTOS 屏蔽的
ARM Cortex-M NVIC 支持中断嵌套功能