STM32单片机学习(2) 外部中断
可另行参考文章:
STM32学习笔记之EXTI(外部中断)http://blog.sina.com.cn/s/blog_6623834301018woa.html
参考资料:STM32数据手册、网络资料
==================================================================================
外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地配置
输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以被独
立的屏蔽。挂起寄存器保持着状态线的中断要求。
==================================================================================
19个中断如下:
17——EXTI线16连接到PVD输出
18——EXTI线17连接到RTC闹钟事件
19——EXTI线18连接到USB唤醒事件
注:有上图可知EXTI0连接的引脚为PA0、PB0、PC0、PD0、PE0、PF0、PG0,其他外部中断EXTI1——
EXTI15类似。所以在使用时尽量将需要的外部中断配置在不同的EXTIx上。
例如需要3个外部中断,我们可以配置到PA0、PB4、PG3上,此时每个中断都有自己的中断处理程
序段。如果配置到PA0、PB0、PC1,则PA0和PB0将公用一个中断程序段。当然如果特殊需要,也
可以这样设计。
==================================================================================
配置使用方法:
- 初始化相应的GPIO管脚
- 配置外部中断源并进行中断源和GPIO的连接
- 编写相应中断源的中断处理程序
==================================================================================
程序代码
- 初始化相应的GPIO管脚
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
STM32单片机学习外部中 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)