请教关于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表示上升沿中断和下降沿中断一起来了,请问是怎么回事?
关于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>[本文内容由国芯人工智能辅助生成,仅供参考] EAXFR开了吗 示波器看下你P20 P21中断时实际波形么,同时触发两个引脚的中断?
输入波形是这样子的 DebugLab 发表于 2025-3-20 17:45
EAXFR开了吗
开了呀
jrpoxbue 发表于 2025-3-20 20:03
输入波形是这样子的
怎么只有一个波形,不是设置了两个引脚吗。电路连接图和使用场景能描述下吗 P2.0和P2.1短接在一起,所以只有一个波形,分别用P2.0和P2.1去检测这个波形的上升沿和下降沿
页:
[1]