外部中断

1. 外部中断的例子和io查询刚好对应起来,中断的效率明显高于查询。

2. 本实验设计和io查询的例子一样,按一下按键,led灯亮灭一次。

  GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Slow);
  GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_Mode_In_PU_IT);//上拉带中断输入(经过测试,设置为上拉时该引脚初始化为高电平)
  
  EXTI_DeInit();
  EXTI_SelectPort(EXTI_Port_B);
  EXTI_SetPinSensitivity(GPIO_Pin_6, EXTI_Trigger_Falling);//下降沿触发中断
  
  enableInterrupts();
  
  while (1)
  {
  }


INTERRUPT_HANDLER(EXTI6_IRQHandler,14)//中断服务函数
{
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */
         EXTI_ClearITPendingBit(EXTI_IT_Pin6);//清除中断,此句如果放到后面会不正常
    
        GPIO_ResetBits(LED_GPIO_PORT, LED_GPIO_PINS);
        delayMs(100);
        GPIO_SetBits(LED_GPIO_PORT, LED_GPIO_PINS);
}


3.  本实验采用2块单片机来实现外部中断,单片机A去触发单片机B,需要主要的是两块单片机尽量使用同一个电源,确保在同一个电压参考系,不然可能会出问题,实物图如下所示。


void testExt()//能够保证产生上升沿或者下降沿
{
  GPIO_SetBits(GPIOE, GPIO_Pin_1);
  GPIO_ResetBits(GPIOE, GPIO_Pin_1);
  GPIO_SetBits(GPIOE, GPIO_Pin_1);
}


void extIntConfig()
{
  changeClock();
  GPIO_Init(GPIOE, GPIO_Pin_1, GPIO_Mode_In_PU_IT);
  EXTI_SetPinSensitivity(EXTI_Pin_1, EXTI_Trigger_Falling);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值