STM8L 外部中断触发方式选择问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM8L 外部中断触发方式选择问题相关的知识,希望对你有一定的参考价值。

STM8L 外部中断触发方式怎么摆选择呢?现在用的是PC5作为中断输入引脚,按照手册将EXTI_CR1[5:4] 设置成:
00: Falling edge and low level
01: Rising edge only
10: Falling edge only
11: Rising and falling edge
感觉没有区别啊,只要有下降沿就会进入中断函数,为什么呢?

参考技术A 00:下降沿和低电平触发
01:仅上升沿触发
10:仅下降沿触发
11:上升沿和下降沿触发

6.STC15W408AS单片机外部中断

一、外部中断简介

        STC15W408AS单片机有4个外部中断,它们分别是:外部中断0(INT0)、外部中断1(INT1)、外部中断2(INT2)、外部中断3(INT3)。

        外部中断0(INT0)和外部中断1(INT1)触发有两种触发方式,上升沿或下降沿均可触发方式

和仅下降沿触发方式。

        TCON寄存器中的IT0/TCON.0和IT1/TCON.2决定了外部中断0和1是上升沿和下降沿均可触发还是仅下降沿触发。如果ITx = 0(x = 0,1),那么系统在INTx(x = 0,1)脚探测到上升沿或下降沿后均可产生外部中断。如果ITx = 1(x = 0,1),那么系统在INTx( x= 0,1)脚探测下降沿后才可产生外部中断。外部中断0(INT0)和外部中断1(INT1)还可以用于将单片机从掉电模式唤醒。

        外部中断2(INT2)、外部中断3(INT3)都只能下降沿触发。外部中断2~3的中断请求标志位被隐藏起来了,对用户不可见,故也无需用户清"0"。当相应的中断服务程序被响应后或中断允许位EXn (n=2,3)被清零后,这些中断请求标志位会立即自动地被清0。这些中断请求标志位也可以通过软件禁止相应的中断允许控制位将其清"0"(特殊应用)。外部中断2(INT2)、外部中断3(INT3)也可以用于将单片机从掉电模式唤醒。

        由于系统每个时钟对外部中断引脚采样1次,所以为了确保被检测到,输入信号应该至少维持2个时钟。如果外部中断是仅下降沿触发,要求必须在相应的引脚维持高电平至少1个时钟,而且低电平也要持续至少一个时钟,才能确保该下降沿被CPU检测到。同样,如果外部中断是上升沿、下降沿均可触发,则要求必须在相应的引脚维持低电平或高电平至少1个时钟,而且高电平或低电平也要持续至少一个时钟,这样才能确保CPU能够检测到该上升沿或下降沿。

二、中断结构图

这里,我们只需要看最上面的部分就可以。

三、中断寄存器

        IE寄存器是中断总控制,IP是中断优先级控制寄存器,TCON的低4位是外部中断0和外部中断1控制位。一般情况下我们只需要操作IE和TCON寄存器即可。

四、实验电路图

实验现象是点按一下按钮,LED闪烁一次,和上面的按键输入实验效果是一样的。

五、实验程序

#include "stc15.h"
void main()
{
	P11 = 0; // 初始设置P1.1为低电平 熄灭LED
	IT0 = 1; // 设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
	EX0 = 1; // 使能INT0中断
	EA = 1;  // 打开总中断
	while (1);
}
//外部中断服务程序
void exint0() interrupt 0 //INT0中断入口
{
  P11 = !P11; //将P1.1口取反
}

        这里需要说明的是为什么外部中断服务程序是 interrupt 0。这个后面数字和中断优先级有关。从上面的中断结构图中,我们就可以看出外部中断0的优先级是最高的,所以这里是0,其他的在后面使用到再讲。

更多首发原创,请关注我。

以上是关于STM8L 外部中断触发方式选择问题的主要内容,如果未能解决你的问题,请参考以下文章

单片机外部中断有两种信号方式,即电平方式和脉冲方式.啥叫电平方式啥叫脉冲方式

MCS----51单片机外部中断请求信号有电平方式和______

6.STC15W408AS单片机外部中断

6.STC15W408AS单片机外部中断

6.STC15W408AS单片机外部中断

Arduino ESP8266外部中断触发示例