各位安安
这边有遇到一个有关于外部中断问题想请教大家
(使用MM32F031C8T6)
我尝试用范例改过使用PB0去做外部中断
可是外部中断程式无任何反应(也就是一直都不会主动跳进中断副程式)
但一般的GPIO却有反应这样...
因为解很久...都没有头绪了
想问大家这要怎么解决 不好意思 麻烦各位了
中断程式码如下:
//******************************************************************************
//Function: EXTI_Init:
//Type :
//******************************************************************************
void EXTI_Init(void){
RCC->AHBENR|=0x3<<17;
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; //System configuration register enable
GPIOB->CRL &= 0xFFFF0FF0;
GPIOB->CRL |= GPIO_CRL_CNF0_1;
Ex_NVIC_Config(_EXTI_GPIOB_,0,_EXTI_FTIR_); //下降沿触
NVIC_Init(2,0,EXTI0_1_IRQn,2); //抢占2,子优先级0,组2
}
//******************************************************************************
//Function: Ex_NVIC_Config:
//Type :
//******************************************************************************
void Ex_NVIC_Config(uint8_t p_GPIO,uint8_t p_Bit,uint8_t TRIM){
uint8_t m_EXTAddr;
uint8_t m_EXTOffset;
m_EXTAddr=p_Bit/4;//得到中断寄存器组的编号
m_EXTOffset=(p_Bit%4)*4;
//RCC->APB2ENR|=0x01;//使能io复用时钟
SYSCFG->EXTICR[m_EXTAddr]&=~(0x000F<<m_EXTOffset);//清除原来设置!!!
SYSCFG->EXTICR[m_EXTAddr]|=p_GPIO<<m_EXTOffset;//EXTI.BITx映射到GPIOx.BITx
//自动设置
EXTI->IMR|=1<<p_Bit;// 开启line BITx上的中断
//EXTI->IMR = 0;//Disable LINE BITX interrupt
//EXTI->EMR|=1<<BITx;//不屏蔽line BITx上的事件 (如果不屏蔽这句,在硬件上是可以的,但是在软件仿真的时候无法进入中断!)
IF(TRIM&0x01)EXTI->FTSR|=1<<p_Bit;//line BITx上事件下降沿触发
if(TRIM&0x02)EXTI->RTSR|=1<<p_Bit;//line BITx上事件上升降沿触发
}
//******************************************************************************
//Function: EXTI0_1_IRQHandler:
//Type :
//******************************************************************************
void EXTI0_1_IRQHandler(void){
__NOP();
if( P_B0 == 0){
__NOP();
}
EXTI->PR=1<<0; //清除LINE0上的中断标志位
} |