外部开关拨到地后,中断触发,但是LED_ON()函数在每一次触发后执行两次,另外开关断开后,LED_OFF()这个函数貌似没有执行的可能性,但是为什么也执行了两遍呢,百撕不得其解,小白求指教,谢谢。
main函数如下所示:
int main(void)
{
asm("sim");
All_Congfig();
asm("rim");
__enable_interrupt();
while (1)
{
feed_dog( );
}
}
按钮输入端口初始化如下:
void Buttom_Init(void)
{
GPIO_Init(GPIOD,Buttom3,GPIO_MODE_IN_PU_IT);
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD, EXTI_SENSITIVITY_FALL_ONLY);
}
中断触发后如下:
case EXTI_SENSITIVITY_FALL_ONLY :// Interrupt on Falling edge only
if(GPIOD->IDR & (0x08))//外部开关断开后,执行关灯操作
{
delay_ms(500/10);// 消抖
if(GPIOD->IDR & (0x08))
{
LED_OFF();
}
}
if(!(GPIOD->IDR & (0x08)))//外部开关接地后,执行开灯操作
{
delay_ms(500/10);// 消抖
if(!(GPIOD->IDR & (0x08)))
{
LED_ON();
}
}
break;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
再请教一下
1。STM8S貌似没有中断标志位啊,怎么在手册里找不见?
2。按照道理按键松开后,是不会有中断进来的,但实际是我测试的时候却进来了……如果改为上升下降沿触发中断却反而执行不了ledoff
一周热门 更多>