牛卧堂MCU技术交流

标题: 求助,为什么设置的外部中断上升沿触发,但是有时候xia'j... [打印本页]

作者: 匿名    时间: 2024-3-15 09:48
标题: 求助,为什么设置的外部中断上升沿触发,但是有时候xia'j...
  1. void EINT_INIT(void)
  2. {
  3.     P2_MFP    = (P2_MFP & (~(P20|P21|P22))) | GP234_INT;   
  4. //     IPRSTC2  |= GPIO_RST;                       
  5. //     IPRSTC2  &= ~GPIO_RST;                        
  6.     P2_PMD    = (P2_PMD & (~(Px0_PMD|Px1_PMD|Px2_PMD))) |Px0_IN|Px1_IN|Px2_IN;     
  7.         //P2_PMD    = (P2_PMD & (~(Px0_PMD|Px1_PMD|Px2_PMD))) |Px0_OUT|Px1_OUT|Px2_OUT;
  8.        
  9.     DBNCECON &= ~ICLK_ON;                    
  10.         DBNCECON &= DBCLK_HCLK;                  
  11.     DBNCECON |= SMP_1024CK;                  
  12.     P2_DBEN  |= DBEN0|DBEN1|DBEN2;              

  13.     P2_IMD &= (IMD0_EDG|IMD1_EDG|IMD2_EDG);         
  14. //     P2_IMD   = 0;
  15.     P2_IEN   |= IR_EN0|IR_EN1|IR_EN2;              
  16.     NVIC_ISER = GP234_INT;                        
  17. }
复制代码


微信图片_20240315094735.png (116.6 KB, 下载次数: 52)

微信图片_20240315094735.png

作者: 匿名    时间: 2024-3-15 09:57
  1. void GPIOP2P3P4_IRQHandler(void)
  2. {
  3.   if(P2_ISRC & 0x01)
  4.         {
  5.                 P2_ISRC |= 0X01;       
  6.                 TimerZeroU = 0;       
  7.         }
  8.   if(P2_ISRC & 0x02)
  9.         {
  10.                 P2_ISRC |= 0X02;       
  11.                 TimerZeroV = 0;
  12.                 P_Test = ~P_Test;
  13.         }
  14.   if(P2_ISRC & 0x04)
  15.         {
  16.                 P2_ISRC |= 0X04;       
  17.                 TimerZeroW = 0;
  18.         }
  19. }
复制代码

这个是中断设置,蓝色的波形是我测试的翻转脚,设置的上升沿触发但是有时候下降沿会触发
作者: chrishu    时间: 2024-3-15 15:11
看不出来你代码里的宏定义都是什么意思?所以不太懂你的代码具体写了什么?你可以拿bsp下的GPIO_EINTAndDebounce例程测试





欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2