jrpoxbue 发表于 2025-3-20 17:06:44

请教关于8H4K64TL单片机P2口上升沿和下降沿中断,为什么上升沿和下降沿中断同时到

我要用8H4K64TL测量外部传感器的信号的高低电平宽度,
现在硬件连接是P2.0和P2.1短接,然后连到外部传感器,
程序如下:

void P2_Int(void) interrupt P2INT_VECTOR
{
    char intf;

    intf = P2INTF;
    UART_SendByte(intf);
    P2INTF = 0x00;
}



void Port_Init()
{
    P2M0 &= ~0x03;
    P2M1 |= 0x03;

    P2PU |= 0x03;
    P2NCS &= ~0x03;
    P2SR &= ~0x03;
    P2IE |= 0x03;

   
    P2IM0 &= ~0x01;   //下降沿中断

    P2IM1 &= ~0x01;

    P2IM0 |= 0x02;    //上升沿中断
    P2IM1 &= ~0x02;


    P2INTE |= 0x03;
}




为什么我通过串口查看的时候,发现intf 的值如下:
接收←01 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03                     03 03 03 03 03 03 03 03 03 03 02 接收←01 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03                     03 03 03 03 03 03 03 03 03 03 02


03表示上升沿中断和下降沿中断一起来了,请问是怎么回事?





国芯人工智能 发表于 2025-3-20 17:08:00

关于STC8H4K64TL单片机P2口上升沿和下降沿中断同时触发的问题,可能由以下原因引起:<br><br>1. 信号抖动:传感器信号可能存在抖动,导致在短时间内多次触发上升沿和下降沿中断。建议在硬件上增加滤波电路,或在软件中增加去抖动处理。<br><br>2. 中断标志清除延迟:在中断服务程序中,读取并清除中断标志(P2INTF)时,可能存在延迟,导致新的中断在标志清除前再次触发。可以尝试在中断服务程序的最开始处立即清除中断标志。<br><br>3. 端口配置:确保P2口的配置正确,P2M0和P2M1寄存器应正确配置为输入模式,并启用中断。<br><br>建议优化中断服务程序如下:<br><br>c<br>void P2Int(void) interrupt P2INTVECTOR<br>{<br>    char intf; <br>    intf = P2INTF; // 读取中断标志<br>    P2INTF = 0x00; // 立即清除中断标志<br>    UARTSendByte(intf); // 发送中断标志<br>}<br><br>void PortInit()<br>{<br>    P2M0 &= ~0x03; // 配置P2.0和P2.1为输入模式<br>    P2INTE = 0x03; // 使能P2.0和P2.1中断<br>    P2INTF = 0x00; // 清除中断标志<br>}<br><br>通过以上调整,可以有效减少中断误触发的情况,确保准确测量传感器信号的高低电平宽度。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]

DebugLab 发表于 2025-3-20 17:45:51

EAXFR开了吗

ercircle 发表于 2025-3-20 17:49:23

示波器看下你P20 P21中断时实际波形么,同时触发两个引脚的中断?

jrpoxbue 发表于 2025-3-20 20:03:50

输入波形是这样子的

jrpoxbue 发表于 2025-3-20 20:04:38

DebugLab 发表于 2025-3-20 17:45
EAXFR开了吗

开了呀

ercircle 发表于 2025-3-20 20:32:18

jrpoxbue 发表于 2025-3-20 20:03
输入波形是这样子的

怎么只有一个波形,不是设置了两个引脚吗。电路连接图和使用场景能描述下吗

jrpoxbue 发表于 2025-3-21 09:34:18

P2.0和P2.1短接在一起,所以只有一个波形,分别用P2.0和P2.1去检测这个波形的上升沿和下降沿
页: [1]
查看完整版本: 请教关于8H4K64TL单片机P2口上升沿和下降沿中断,为什么上升沿和下降沿中断同时到