打印
[应用相关]

STM32笔记记录2

[复制链接]
489|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
waveforms|  楼主 | 2019-5-14 19:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
外部中断控制:
   STM32的每个IO 都可以作为外部中断的中断输入口,这点也是STM32的强大之处。STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19个外部中断为:
    线0~15:对应外部IO 口的输入中断。
    线16:连接到PVD输出。
    线17:连接到RTC闹钟事件。
    线18:连接到USB唤醒事件。
   STM32供IO 口使用的中断线只有16个,但是STM32的IO 口却远远不止16个,STM32就这样设计,GPIO的管教GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线15~0。这样每个中断线对应了最多7个IO 口,以线0为例:它对应了GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0。而中断线每次只能连接到1个IO 口上,这样就需要通过配置来决定对应的中断线配置到哪个GPIO上了。
   AFIO(alternate-function I/O),指GPIO端口的复用功能,GPIO除了用作普通的输入输出(主功能),还可以作为片上外设的复用输入输出,如串口、ADC、这些就是复用功能。大多数GPIO都有一个默认复用功能,有的GPIO还有重映射功能,重映射功能是指把原来属于A引脚的默认复用功能,转移到了B引脚进行使用,前提是B引脚具有这个重映射功能。当把GPIO用作EXTI外部中断或使用重映射功能的时候,必须开启AFIO时钟,而使用默认复用功能的时候,就不必开启AFIO时钟了。
    主要步骤:1、使能EXTIx线的时钟和第二功能AFIO时钟
                  2、配置EXTIx先得中断优先级
        3、配置EXTI中断线IO
                   4、选定要配置为EXTI的IO口线和IO口的工作模式
        5、EXTI中短线工作模式配置
      另外:NVIC_PriorityGroupConfig()库函数,把NVIC中的中断优先级分组设置;然后再向NVIC初始化结构体写入参数。NVIC_IRQChannel=EXTI9_5_IRQn,表示要配置的为EXTI第5-9线的中断向量。这些写入的参数在stm32f10x.h文件的IRQn类型定义中查到。
         中短线0-4每个中断线对应一个中断函数,中断线5-9共用中断函数EXTI9_5_IRQHandler,中断线10-15共用中断函数EXTI15-10-IRQHandler。在编写中断服务函数的时候会经常使用到两个函数,第一个函数是判断某个中断线上的中断是否发生(标志位是否置位):
      ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
这个函数一般使用在中断服务函数的开头判断中断是否发生。另一个函数是清除某个中断线上的中断标志位:
      void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
这个函数一般应用在中断服务函数结束之前,清除中断标志位

使用特权

评论回复
沙发
susceptibility| | 2019-5-14 19:39 | 只看该作者
感谢楼主分享!很不错的经验。

使用特权

评论回复
板凳
xinpian101| | 2019-5-14 21:36 | 只看该作者
AFIO(alternate-function I/O),指GPIO端口的复用功能

使用特权

评论回复
地板
xinpian101| | 2019-5-14 21:37 | 只看该作者
原来如此,以前不清楚这个

使用特权

评论回复
5
木木guainv| | 2019-6-12 10:52 | 只看该作者
期待楼主的下一篇

使用特权

评论回复
6
aoyi| | 2019-6-12 10:56 | 只看该作者
中断向量如何进行配置呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

212

帖子

1

粉丝