外设事件中断响应流程及注意事项

Questions:为实现任务的快速响应,应用通常会设计外设中断,在中断函数内响应事件标志对应的回调任务。但大多外设均具备多个可引起中断的事件标志,如何实现回调任务的精确响应将变得尤其重要,本文档旨在介绍一种保障回调任务可被精确响应的方法。

Answer:

以下将以USART2为例进行阐述。

中断响应过程及注意事项

1) 事件标志置位

当事件标志产生条件成立后,硬件会置位对应的事件标志。

示例:当USART2接收数据缓冲器满时,会立即置位对应的RDBF标志。

注意:事件标志的置位发生在其对应的事件产生条件成立时,不受对应的中断使能状态影响。

2) 中断服务响应

当事件标志,且对应的外设中断处于使能状态时,硬件会通过外设中断通道向内核申请中断服务。

示例:当USART2的RDBF标志置位,且RDBFIEN处于开启状态时,硬件会自动通过USART2中断通道向内核申请中断服务,同步置位USART2的NVIC pending位来指示有中断申请出现,以指示代码需要跳转到中断服务函数执行。

注意:外设中断处于失能状态时,对应的事件标志置位并不会申请中断服务。

3) 中断函数执行

在符合中断响应优先级规则条件时,代码就会自动跳转执行中断函数内的回调任务。

由于同一个中断通道具备多个引起中断的事件标志,对应共用同一个NVIC pending位,且该pending位在代码跳转到中断函数后会被硬件自动清零。

注意:该NVIC pending位会跟随该中断通道内的任意被使能中断的事件标志置位而置位,其只记录有无,不会累加。并在响应中断函数时被硬件自

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值