[STM8] 谁能帮我解释下这个外部中断奇怪现象

[复制链接]
1294|4
 楼主| huhaomcu 发表于 2014-3-21 17:43 | 显示全部楼层 |阅读模式
本人菜鸟学习STM8,在学习外部中断过程中发现了一个奇怪的问题,我的代码如下:
int main( void )
{
  GPIO_DeInit(GPIOF);
  GPIO_Init(GPIOF,GPIO_Pin_0,GPIO_Mode_In_PU_IT);
  GPIO_Init(GPIOF,GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Fast);

  disableInterrupts();
  EXTI_DeInit();
  EXTI_SetPinSensitivity(EXTI_Pin_0,EXTI_Trigger_Falling_Low);
  enableInterrupts();
  
  GPIO_WriteBit(GPIOF,GPIO_Pin_1,RESET);
   
  while(1);
}
怪就怪在当执行enableInterrupts()语句后,程序会立马进入到外部中断服务程序内!而后当我给PF0低电平时,它是能正常进入中断服务程序的,说明程序整体上并无问题!通过调试发现当我将  GPIO_Init(GPIOF,GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Fast);注释掉后,程序就不会出现上述现象,当我加上后又会出现执行enableInterrupts()后会立马进入中断,这是为什么呢?求人指教!!
nienianhong 发表于 2014-3-21 18:20 | 显示全部楼层
GPIO_Init(GPIOF,GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Fast); 那你的好好理解这个函数和IO口部分
mmuuss586 发表于 2014-3-21 18:53 | 显示全部楼层
GPIO_Mode_Out_PP_Low_Fast改成高看看
 楼主| huhaomcu 发表于 2014-3-22 11:09 | 显示全部楼层
mmuuss586 发表于 2014-3-21 18:53
GPIO_Mode_Out_PP_Low_Fast改成高看看

将GPIO_Mode_Out_PP_Low_Fast改成高速后,当执行完最后一句GPIO_WriteBit(GPIOF,GPIO_Pin_1,RESET);后也会进入中断ISR中,不明白,我将PF.1明明是设置成的输出模式,也并未打开其中断功能,为什么它会引起程序进入中断内呢,并且进入的还是External IT PIN0 Interrupt routine中??
desertsailor 发表于 2014-3-23 12:42 | 显示全部楼层
PF1和PF0是不是接到一起了,检查一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

509

帖子

3

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