打印
[技术问答]

求助各位大佬,N76E003管教中断问题

[复制链接]
578|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Z_H_Z1102|  楼主 | 2021-2-16 13:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大仙,开发管教中断功能出现问题,初始化代码如下:
void KeyInit(void)
{
  P01_Input_Mode;

  clr_P0S_1;
  set_P0S_1;

  Enable_INT_Port0;
  Enable_BIT1_RasingEdge_Trig;
  set_EPI;// Enable pin interrupt
}

我要配置P01为按键中断引脚,目前IO直接接地,中断函数如下:
void PinInterrupt (void) interrupt 7
{
  printf("PinInterrupt PIF 0x%bx\n",PIF);
  Timer1_Delay10ms(10);
        if(PIF == 0x02){
                //清除外部中断标志
    SetMcuNeedTo_ISR(KEY_NEED_READ);
        }
        PIF &= 0x00;
        printf("after PIF 0x%bx\n",PIF);
}

目前初始化代码只有串口、delay,LED灯和这个按键的初始化,while大循环里面只有printf打印,结果就是while进不去,然后串口打印如下:
[2021-02-16 13:17:38.249]# RECV ASCII>
after PIF 0x10
PinInterrupt PIF 0x10
[2021-02-16 13:17:38.361]# RECV ASCII>
after PIF 0x10
PinInterrupt PIF 0x10
[2021-02-16 13:17:38.474]# RECV ASCII>
after PIF 0x10
PinInterrupt PIF 0x10
以上log无限循环,p0.4目前接了个LED灯,所以很奇怪这个中断不停地来是个什么情况。
而且PIF=0的操作也没生效,中断标志清不掉,太见鬼了

使用特权

评论回复
沙发
Z_H_Z1102|  楼主 | 2021-2-16 13:28 | 只看该作者
其实我参考例程   还加了一个如下中断处理函数,但是log上看没调用
void EXT_INT0(void) interrupt 0
{
  printf("EXT_INT0 PIF 0x%bx\n",PIF);
  Timer1_Delay10ms(10);
}

使用特权

评论回复
板凳
Z_H_Z1102|  楼主 | 2021-2-16 14:32 | 只看该作者
我换成高电平触发的时候
Enable_BIT1_HighLevel_Trig;
在GPIO接地的时候,倒是没中断了。然后能够在接高的时候持续产生中断,但PIF的值还是清不掉。

使用特权

评论回复
地板
jiekou001| | 2021-2-16 19:15 | 只看该作者
中断里不要printf

使用特权

评论回复
5
jekey| | 2021-2-16 22:53 | 只看该作者
本帖最后由 jekey 于 2021-2-16 22:57 编辑

1. 不要在中断时延时, 从打印的信息看, 是PIN4发生中断, 但是,判断的是0x02, PIN1, 检查硬件的连接端口。
2. 要在中断时串打印信息,那么, 串口速率要足够高,例如115200。
3. 可以从网上下载例程参考

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

82

帖子

4

粉丝