本帖最后由 ltwsq 于 2015-8-25 09:29 编辑
近来由于工程需要,改用STM8S芯片。但在程序改写的过程当中进行在线调试,发现输入中断发生时,相应的中断服务程序竟然连续执行两次,这是为什么啊?请各位大侠指点一下,代码如下:
端口初始化代码
void port_init(void)
{
GPIO_DeInit(GPIOB);//端口B
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_FALL_ONLY);//仅下降沿中断
GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_IN_PU_IT);//PB4上拉输入有中断功能
ITC->ISPR2 &= ~(1<<1);//将PB的软件中断优先级设定为2,这是为了在后面能够和定时器3溢出中断进行嵌套
}
中断服务程序
@far @interrupt void EXTI_PORTB_IRQHandler(void)
{
i_Message_flag=1; //输入中断标志置位
ir_flag=1;
TIM3->ARRH = 0x00; // 设定重装载时的寄存器的高8位
TIM3->ARRL = 0xD0; //
TIM3->CNTRH = 0x00; //
TIM3->CNTRL = 0x00;
} |