嵌入式单片机开发实战例程合集:
链接:https://pan.baidu.com/s/11av8rV45dtHO0EHf8e_Q0Q?pwd=28ab
提取码:28ab
EXIT模块测试
- 功能描述
外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿触发)。每个输入线都可以被独立的屏蔽。挂起寄存器保持着状态的中断要求。
- 主要特性
EXTI控制器的主要特性如下:
- 每个中断/事件都有独立的触发和屏蔽
- 每个中断线都有 专用的状态位
- 支持多达19个中断/事件请求
- 检测脉冲宽度低于APB2时钟宽度的外部信号。
外部中断/事件线路映像:
80通用I/O端口以下图的方式连接到19个外部中断/事件上:
另外三种其他的外部中断/事件控制器的连接如下:
- EXT1线16连接到PVD输出
- EXTI线17连接到RTC闹钟事件
- EXTI线18连接到USB唤醒事件
3、硬件电路
- 软件代码
/********************************************************************
* 文件 :EXTI.c
* 版本 :V1
* 描述 :STM32f103VCT6的中断配置
* 说明 :外部中断线6产生中断时,进入中断服务程序后让蜂鸣器响
********************************************************************/
#include"stm32f10x_lib.h"
void EXTI_Configuration(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* =======================开启时钟================*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); // 使能APB2外设GPIOC时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //配置PB6为外部中断
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //下拉输入
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource6);
EXTI_DeInit(); //将EXIT寄存器重设置为缺省值
EXTI_InitStructure.EXTI_Line = EXTI_Line6 ; //中断线
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt ; //中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; //双边沿
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能
EXTI_Init(&EXTI_InitStructure); //初始化
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
#ifdef VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}