打印
[STM8]

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

[复制链接]
1066|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中??

使用特权

评论回复
5
desertsailor| | 2014-3-23 12:42 | 只看该作者
PF1和PF0是不是接到一起了,检查一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

189

主题

508

帖子

3

粉丝