Cortex-M0处理器允许两种形式的中断请求:电平触发和脉冲输入。
电平触发是外设的中断请求有持续的电平信号,若电平信号在处理器从ISR返回之前没有被取消,则中断返回后将再次触发已经服务过的中断。
脉冲中断是在信号的上升沿同步采样的中断信号,为了确保NVIC检测到中断,外设必须维持中断信号至少一个时钟周期,在此期间,NVIC检测脉冲和锁存中断。后续的脉冲可以将暂挂状态加到活动中断中,使状态为中断活动且挂起。然而,在有限周期内发生的多个脉冲只登记作为中断调度的单个事件。
哪些中断是电平触发的,哪些是脉冲触发的,具体选择哪一种是根据芯片设计来决定,不过大多数的外设使用电平触发中断输出。
1. 电平触发和脉冲输入
Cortex-M0处理器锁存所有中断,外围中断成为等待其中一个原因是:
- NVIC检测到中断信号被置位并且对应的中断不是active
- NVIC检测到中断信号的上升沿
- 软件写入相应的中断集挂起寄存器位
挂起的中断将一直挂起,直到下列情况之一发生:- 处理器为中断进入ISR,这将改变中断的状态等待活跃:
对于电平触发型中断,当处理器从ISR返回时,NVIC采样中断信号。如果中断信号仍然有效,表示中断的状态更改为pending,这可能会导致处理器立即重新进入ISR。否则,中断的状态将变为非活动状态。
对于脉冲触发型中断,NVIC继续监视中断信号,如果这样触发时,中断状态变为挂起和活动状态。在这种情况下,当处理器从ISR返回中断状态时,中断状态变为挂起状态可能会导致处理器立即重新进入ISR。如果中断信号不是脉冲而处理器是在ISR,当处理器从ISR返回中断状态变为非活动状态。
对于电平触发型中断,如果中断信号仍然有效,则中断的状态中断不会改变。否则,中断的状态将变为非活动状态。对于脉冲中断,中断状态变为:- inactive,如果状态是pending
- active,如果状态是活动的和挂起的
|