找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2576|回复: 0
打印 上一主题 下一主题
收起左侧

STM32学习-EXTI的使用

[复制链接]
跳转到指定楼层
楼主
ID:81272 发表于 2015-5-27 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用GPIO作为中断源,即EXTI,在程序中通过以下步骤实现:

1. 使能EXTIx线的时钟和第二功能AFIO时钟。
   //本实验中使用PB0作为EXTI输入
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
   GPIO被配置成EXTI输入,是复用功能,所以要将AFIO时钟打开。

2. 配置EXTIx中断优先级。
   NVIC_Configuration();
   这是通过配置NVIC(Nested Vector Interrupt Controller)来实现,其实就是通过对NVIC的初始化(NVIC_Init())。
   static void NVIC_Configuration(void)
   {
     NVIC_InitTypeDef NVIC_InitStructure;

     /* Configure one bit for preemption priority */
     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

     /* 配置P[A|B|C|D|E]0为中断源 */
     NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
     NVIC_Init(&NVIC_InitStructure);
   }
  对NVIC初始化就是定义并填充一个NVIC_InitTypeDef类型的结构体。
  typedef struct
  {
    uint8_t NVIC_IRQChannel;
    uint8_t NVIC_IRQChannelPreemptionPriority;
    uint8_t NVIC_IRQChannelSubPriority;
    FunctionalState NVIC_IRQChannelCmd;
  } NVIC_InitTypeDef;
  由NVIC_IRQChannel成员来选择要配置的中断向量,由NVIC_IRQChannelPreemptionPriority来配置中断的抢占优先级,由NVIC_IRQChannelSubPriority来配置中断的响应优先级,由NVIC_IRQChannelCmd来打开(使能,ENABLE)或关闭(DISABLE)该中断。关于两种中断优先级的问题,可以参考后面野火的参考文档。

3. 配置EXTI中断IO.
  首先这是一个GPIO,要先进行如下配置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;      
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;  // 上拉输入
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  再进行中断配置
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);
  EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿中断
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

4. 编写中断服务程序。在这里是通过接在PB0上的按键来控制接在PB5上的LED亮灭。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表