触发方式选择位和选择标志位的区别
答案:2 悬赏:80 手机版
解决时间 2021-03-02 11:19
- 提问者网友:我一贱你就笑
- 2021-03-02 06:15
触发方式选择位和选择标志位的区别
最佳答案
- 五星知识达人网友:英雄的欲望
- 2021-03-02 07:17
中断一般有两种触发方式可选:电平触发和边沿触发。
选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。
选择边沿触发方式时,单片机在连续的时钟周期检测到中断源口线电平跳变,即置位中断标志,请求中断。
这个原理很好理解。但应用时需要特别注意的几点:
1、电平触发方式时,中断标志寄存器不锁存中断请求信号。
也就是说,单片机把采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。
换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。
(例如:中断嵌套的时间太长,导致无法及时响应该中断;RTOS里面的任务关闭中断时间过长,导致无法及时响应该中断)
2、边沿触发方式时,中断标志寄存器锁存了中断请求。
中断口线上电平跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除(或者在ISR末尾由人工将中断标志置位)。因此当CPU正在执行同级中断(甚至是该外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
(例如:如果中断嵌套的时间足够长,则在执行该中断的过程中,再次出现该中断请求,则会导致连续执行两次该中断,一般这种情况并不是我们希望的,所以可以在ISR的末尾加上清中断标志的语句)
3、中断标志可以手工清除。
一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。
选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。
选择边沿触发方式时,单片机在连续的时钟周期检测到中断源口线电平跳变,即置位中断标志,请求中断。
这个原理很好理解。但应用时需要特别注意的几点:
1、电平触发方式时,中断标志寄存器不锁存中断请求信号。
也就是说,单片机把采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。
换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。
(例如:中断嵌套的时间太长,导致无法及时响应该中断;RTOS里面的任务关闭中断时间过长,导致无法及时响应该中断)
2、边沿触发方式时,中断标志寄存器锁存了中断请求。
中断口线上电平跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除(或者在ISR末尾由人工将中断标志置位)。因此当CPU正在执行同级中断(甚至是该外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
(例如:如果中断嵌套的时间足够长,则在执行该中断的过程中,再次出现该中断请求,则会导致连续执行两次该中断,一般这种情况并不是我们希望的,所以可以在ISR的末尾加上清中断标志的语句)
3、中断标志可以手工清除。
一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。
全部回答
- 1楼网友:野慌
- 2021-03-02 08:50
会置1,响应中断后就自动置位0
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯