STM32F103中断实验

1 STM32外部中断概述

stm32的中断控制器支持19个外部中断请求,其中线0~15对应外部IO口的输入中断。线16连接到PVD输出。线17连接到RTC闹钟事件。线18连接到USB唤醒事件。

每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。

 stm32的IO中断线只有16个,但是STM32F10x系列的IO口多达上百个,那中断线怎么跟IO口对应呢?

这里就要用到映射的知识了,在STM32中,GPIOx.0映射到EXTI0线。(其中x=ABCDEFG口中的一个)

中断向量与中断服务函数

可惜在STM32中并不是16个中断线可以分配16个中断服务函数。

IO口外部中断在中断向量表中只分配了7个中断向量,也就是只能使用7个中断服务函数

从表中可以知道,EXTI0(表有错误,实际有EXTI0)~EXTI4分别拥有五个中断服务函数。但到了EXTI9-5就只能将EXTI5~EXTI9共用一个中断服务函数了。EXTI15-10也是同理。 


外部中断常用库函数

1. void GPIO_EXTILineConfig(uint8_t GPIO_PortSource,uint8_t GPIO_PinSource);

//设置IO口与中断线的映射关系。

2.void EXTI_init(EXTI_InitTypeDef* EXTI_InitStruct);

//初始化中断线;触发方式等。

3.ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);

//判断中断线的中断状态,是否发生。

4.void EXTI_ClearITPendingBit(uint31_t EXTI_Line);

//清除中断线上的中断标志位。


void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);


外部中断一般配置步骤

1.初始化IO口为输入。
       GPIO_Init();

2.开启IO口复用时钟。

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

3.设置IO口与中断线的映射关系。
        void GPIO_EXTILineConfig();

4.初始化线上中断,设置触发条件等。
       EXTI_Init();

5.配置中断分组(NVIC),并使能中断。
       NVIC_Init();

6.编写中断服务函数。

      EXTIx_IRQHandler();

7.清除中断标志位
      EXTI_ClearITPendingBit();

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值