历史上的今天
今天是:2024年12月14日(星期六)
2021年12月14日 | STM32外部中断事件控制器EXTI概念及使用方法
2021-12-14 来源:eefocus
前言
EXTI: External interrupt / event controller
外部中断/事件控制器
提示:以下是本篇文章正文内容
一、EXTI功能框图

二、使用方法
1.EXTI_InitTypeDef 初始化结构体
1-EXTI_Line:用于产生中断/事件线
2-EXTI_Mode : EXTI模式(中断/事件)
3-EXTI_Trigger:触发(上/下/上下)
4-EXTI_LineCmd:使能或者失能(IMR/EMR)
2.实现步骤
1-初始化要连接到EXTI的GPIO
2-初始化EXTI用于产生中断/事件
3-初始化NVIC,用于处理中断
4-编写中断服务函数
5-main函数
三、代码实现
1.EXTI .C文件
#include "bsp_exti.h"
static void EXTI_NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
}
void EXIT_Key_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
EXTI_InitTypeDef EXTI_InitStruct;
// 配置中断优先级
EXTI_NVIC_Config();
// 初始化GPIO
RCC_APB2PeriphClockCmd(KEY1_INT_GPIO_CLK, ENABLE);
GPIO_InitStruct.GPIO_Pin = KEY1_INT_GPIO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStruct);
// 初始化EXTI
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
EXTI_InitStruct.EXTI_Line = EXTI_Line0;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);
}
2.EXTI .H文件
#ifndef __BSP_EXTI_H
#define __BSP_EXTI_H
#include "stm32f10x.h"
#define KEY1_INT_GPIO_PIN GPIO_Pin_0
#define KEY1_INT_GPIO_PORT GPIOA
#define KEY1_INT_GPIO_CLK RCC_APB2Periph_GPIOA
void EXIT_Key_Config(void);
#endif /* __BSP_EXTI_H */
2.MAIN.C
#include "stm32f10x.h" // 相当于51单片机中的 #include #include "bsp_led.h" #include "bsp_exti.h" void Delay( uint32_t count ) { for(; count!=0; count--); } int main(void) { // 来到这里的时候,系统的时钟已经被配置成72M。 LED_GPIO_Config(); EXIT_Key_Config(); while(1) { } }
史海拾趣
|
NIOS 设计从入门到精通.................................................. 1 目录 .................................................................. 3 总体概述 .............................................................. 5 第 ...… 查看全部问答> |
|
刚开始学习单片机时,需要一个开发板,对开发板上的元器件我们要有一个基本的了解,才能好好的进一步学习如何编写程序,现在给大家分享一个开发板常用芯片的资料,希望大家好好学习,天天向上… 查看全部问答> |
|
目录: A篇 数字电路解题技巧50法 A.1 数制与逻辑代数 一法2“进制数—2”进制数的快速转换法 二法优进制数—n进制数的通用转换法 三法求取逻辑函数最小项之和形式的三种解法 四法求取逻辑函数最大项之积形式的三种解法 五法用代数化简法 ...… 查看全部问答> |
|
我需要对+5V、 -5V 、+15 V、-15V 、+3.3V、+1.8V进行监测,其中+1.8V由+3.3V稳压,其他均由开关电源模块输出,且各路电流均很大10A以上,主要监测各路输出是否正常,相当于实时自检上报电源状态是否正常,通过LED显示出来。还有一个问题就是假如某 ...… 查看全部问答> |
|
各位英雄: 小弟的开发环境:PXA270+WINCE5.0,摄像头为OV9650,现在要开发驱动及测试应用程序。手上的驱动源码是ADCM2650的,而且貌似支持DirectShow,因为导出函数有: CAM_Init CAM_Deinit   ...… 查看全部问答> |
|
基于ZigBee技术的远程医疗监护系统设计方案摘 要:将无线传感器网络引入医疗监护系统,提出了一种由ZigBee传感器和无线局域网构成的远程医疗监护系统的体系结构和具体实现方法。系统中,节点和基站设备所使用的近距离通信标准为802. 15. 4 /ZigBee ...… 查看全部问答> |




