[STM8] 关于stm8的GPIO外部中断,会引起系统复位

[复制链接]
6294|12
 楼主| lordor 发表于 2010-5-21 22:37 | 显示全部楼层 |阅读模式
直接跑不带有外部中断的程序,运行一切正常,但如果设置GPIO外部中断,运行几秒钟后,会引起系统复位

这个一般是什么问题引起的?下面为代码

1 设置:

#define     PH1            GPIO_PIN_2
#define     PH1_PORT        GPIOD

//输入
GPIO_Init(PH1_PORT, PH1, GPIO_MODE_IN_PU_IT);

  /* Initialize the Interrupt sensitivity */
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD, EXTI_SENSITIVITY_FALL_ONLY);

  enableInterrupts();

2  在中断文件中设置:
{0x82, (interrupt_handler_t)EXTI_PORTD_IRQHandler}, /* irq6 - External interrupt 3 (GPIOD) */



3  中断实现函数中


#ifdef _COSMIC_
@far @interrupt void EXTI_PORTD_IRQHandler(void)
#else /* _RAISONANCE_ */
void EXTI_PORTD_IRQHandler(void) interrupt 6
#endif /* _COSMIC_ */
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
        if ((GPIO_ReadInputData(PH1_PORT) & PH1) == (u8)0x00)
        {
                       
                               
        /* Toggle GPIO PIN5 */
        GPIO_WriteReverse(LED_PORT, LED1);
       
        }
}

/**



代码很简单,单步执行的话,是可以正常进入中断,但全速运行就会复位,百思不得其解,那位大侠指点一下,谢
CrazyST 发表于 2010-5-22 10:55 | 显示全部楼层
楼主用PH1做外中断???手册上写只有PA,PB,PC,PD,PE这五组端口有外部中断!
 楼主| lordor 发表于 2010-5-22 15:06 | 显示全部楼层
我是用PD2中外部中断的
香水城 发表于 2010-5-22 17:20 | 显示全部楼层
很可能是堆栈溢出。
pkat 发表于 2010-5-23 19:50 | 显示全部楼层
堆栈溢出会引起复位?
hsbjb 发表于 2010-5-23 19:55 | 显示全部楼层
那堆栈溢出可能是什么原因引起的
 楼主| lordor 发表于 2010-5-23 23:21 | 显示全部楼层
香版主,怎么看到堆栈的设置,使用stvp
IJK 发表于 2010-5-24 09:34 | 显示全部楼层
在中断 EXTI_PORTD_IRQHandler里面,应该清一下中断标志
CrazyST 发表于 2010-5-24 18:16 | 显示全部楼层
外部中断没有中断标志
CrazyST 发表于 2010-5-24 18:20 | 显示全部楼层
楼主有没有试过PC或是其他几组端口?怀疑SWIM口受到影响
 楼主| lordor 发表于 2010-5-26 11:09 | 显示全部楼层
再顶一下,初步怀疑是堆栈问题,写了几块板,只有一块工厂正常,另几块还是有同样异常反映
CrazyST 发表于 2010-5-26 16:24 | 显示全部楼层
那么大的堆栈如果都给压爆。。。。:(
CoolBird007 发表于 2010-5-30 18:28 | 显示全部楼层
我试了没问题呀。。。我没有用库,PB0中断。情绪很稳定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

54

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部