EXTIB中断
B0-7任意一个端口接地,然后断开地,程序进入中断,但为什么还是会不停的执行中断函数EXTIB_IRQHandler()?第一次接触STM8L,求高人指点
//-----下降沿中断------
EXTI_CR1=0xFF; // Port 3-0 0x00: Falling edge and low level 0x55: Rising edge only 0xAA: Falling edge only 0xFF: Rising and falling edge
EXTI_CR2=0xFF; // Port 7-4 0x00: Falling edge and low level 0x55: Rising edge only 0xAA: Falling edge only 0xFF: Rising and falling edge
EXTI_CR3=0x0F; // port B D 0x00: Falling edge and low level 0x05: Rising edge only 0x0A: Falling edge only 0x0F: Rising and falling edge
EXTI_SR1=0x00; // 清Portx 中断
EXTI_SR2=0x00; // 清PortB D 中断
EXTI_CONF=0x07; //PD0 PB0-7 选择 EXTID EXTIB 中断
//------------Port def-------------------
 
A_DDR = 0x0D; // PA023输出,PA1输入
 
A_CR1 = 0x0F; // 上拉输入
 
A_CR2 = 0x00; // External interrupt disabled
 
A_ODR = 0x0C; // PA2-3 H PA0 L
PB_DDR = 0x00; // PB0-7输入
 
B_CR1 = 0xFF; // 0xFF 上拉输入
 
B_CR2 = 0xFF; // PB0-7 开中断External interrupt enabled
//------------中断函数--------------------------------
@far @interrupt void EXTIB_IRQHandler(void){ //
//EXTI_SR1=0x00; // 清Portx 中断 好像不起作用
EXTI_SR2=0x00; // 清PortB D 中断 好像不起作用
 
A_ODR = PA_ODR ^ 0x01; // 示波器接PA0 可以查看中断状态 发现不停的执行
}
一周热门 更多>