找回密码
 立即注册

QQ登录

只需一步,快速开始

开启左侧

[M051] 求助,为什么设置的外部中断上升沿触发,但是有时候xia'j...

[复制链接]
匿名  发表于 2024-3-15 09:48:45 |阅读模式
  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
回复

使用道具

匿名  发表于 2024-3-15 09:57:07
  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:24 | 显示全部楼层
看不出来你代码里的宏定义都是什么意思?所以不太懂你的代码具体写了什么?你可以拿bsp下的GPIO_EINTAndDebounce例程测试
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU