新闻中心

EEPW首页>嵌入式系统>设计应用> STM8S 外部中断一直进解决方法

STM8S 外部中断一直进解决方法

作者: 时间:2016-11-13 来源:网络 收藏
用到官方的函数库操作,也看了例程,设计方法基本一样:

        

GPIO_Init(GPIOA, (GPIO_Pin_TypeDef)(GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6), GPIO_MODE_IN_PU_IT); //设置外部IO中断模式
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOA, EXTI_SENSITIVITY_FALL_ONLY); //设置中断触发方式

本文引用地址: //m.amcfsurvey.com/article/201611/316512.htm然后 外部中断就可以进了,但是发现中断服务函数没有中断源的情况下一直进。
解决方法:
在初始化外部中断的时候,总中断一定要关。
初始化完外部中断,在开总中断,上述情况得到解决,只有触发源来的时候进中断。

因为没有中断的清除标志位,这一点与其它 单片机是不同的。
EXTI_CR1 触发边沿的设置 要在总中断没开时才能写入!
PD7 是 不可屏蔽的最高优先级的硬件中断 (TLI)
设置顺序:最好先关中断 设置边沿 开启引脚 最后开总中断
DisableAllIntp();
EXTI_CR1 = ****(PD口双沿中断);
Init_Exti_PD_Intp();
EnableAllIntp();
另外定时器读取与51有异,顺序要先读TIM1->CNTRH 再读TIM1->CNTRL
要是反过来读 就会得不到正确的值 写CNTR寄存器时,要先关闭(disable)定时器,否则有可能无法正常写入的值



关键词:STM8S外部中

评论


技术专区

关闭