*pFIO_DIR &=~(PF0|PF1);
执行这个,接口设置输入,读取接口状态,外部接口上拉,读取值为1.
我查看寄存器发现FIO_FLAG_C,FIO_FLAG_T,FIO_FLAG_D,FIO_FLA_S,这四个寄存器全变成了0003。
正常,处理器就是这么设计的。
但是当我运行到*pFIO_EDGE |= PF0|PF1;这一步的时候,这四个寄存器莫名其妙的变成了0000。
执行这个,数据寄存器将不再指示当前IO的状态,而指示的是 是否触发,1代表触发,0代表没有触发,所以全部变为0.
飞线接地,这时候显示了有PF0这个中断,而上面 四个寄存器突然变成了0001,问我不明白,我是接地,原来PF口是 低电平,我接地还是低电平,此时根本就 不能 形成 下降沿,为什么 能 够触发中断呢。
PF接口被上拉,电平始终为1,接地后产生下降沿,触发中断。
飞线接地,这时候显示了有PF0这个中断,而上面 四个寄存器突然变成了0001,问我不明白,我是接地,原来PF口是 低电平,我接地还是低电平,此时根本就 不能 形成 下降沿,为什么 能 够触发中断呢,还有,我接地为什么FIO_FLGA_D这个寄存器会是0001呢,我可是接地输入的低电平呀,
因中断触发,相对应的IO接口数据被设置为1.表示该接口中断触发,而非表示电平状态。
然后我接着将 PF口连接到了3V电源上,这是我突然发现也可以出触发中断,怎么 接高电平也可以触发中断呢,很 不 明白?
断开接地PF接口在上拉电阻作用下会自动变为1,你接电源产生中断,是由于接口接入高电平在接触瞬间出现电平抖动,产生了中断。