没有合适的资源?快使用搜索试试~ 我知道了~
应用笔记LAT1363+浅析单次事件进入两次中断问题
需积分: 5 0 下载量 149 浏览量
2024-03-15
11:10:50
上传
评论
收藏 529KB PDF 举报
温馨提示
试读
7页
在使用基于 ARM CORTEX-M3、M4 或 M7 系列的 STM32 芯片做产品开发时,可能有人 遇到过单次事件会触发两次中断的情形。或许对异常现象的表述不尽相同,比方有的人会说怎么中断请求标志要清 2 次才行;由于中断里有些执行操作,有人会说代码里明明只执行一次,可实际运行时却是两次;有的人会说,有些执行动作放在中断外执行正常,放到中断服务程序里又异常了等等。记得有一次,有个 STM32 用户反映,他的 SPI 实际发送效果跟程序代码里设计的完全不一样,明明是 8 位发送,硬生生变成了 16 位发送,诡异的很。诸如此类
资源推荐
资源详情
资源评论
LAT1363
Local Application Tips
LAT1363 – Rev 1.0 – Jan. 2024
浅析单次事件进入两次中断问题
关键字:中断,咬尾机制
1、问题描述
在使用基于 ARM CORTEX-M3、M4 或 M7 系列的 STM32 芯片做产品开发时,可能有人
遇到过单次事件会触发两次中断的情形。或许对异常现象的表述不尽相同,比方有的人会说怎么
中断请求标志要清 2 次才行;由于中断里有些执行操作,有人会说代码里明明只执行一次,可实
际运行时却是两次;有的人会说,有些执行动作放在中断外执行正常,放到中断服务程序里又异
常了等等。记得有一次,有个 STM32 用户反映,他的 SPI 实际发送效果跟程序代码里设计的完
全不一样,明明是 8 位发送,硬生生变成了 16 位发送,诡异的很。诸如此类。
2、问题分析
像上面提到的这些情况,他们的中断服务程序代码都有个共性。那就是他们把清外设中断请
求标志的那行代码放在中断程序的结尾处。类似像下面的样子:
问题的原因就在于清除外设中断请求标志的代码执行完毕后,该标志位的清零相对于程序的
执行有点延迟,即标志位并没有跟程序执行指令同步完成,导致此时又产生了新的中断请求,让
CPU 又跑了一次。因为又跑了一次,给之前那个清除标志的执行动作以足够的时间来完成清零。
所以,一般来讲代码即使这样写,一次中断事件最多也就触发两次中断请求及响应。
资源评论
冻结的鱼
- 粉丝: 1176
- 资源: 156
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功