STM32F407中断初始化代码

发布者:感恩的7号最新更新时间:2018-10-08 来源: eefocus关键字:STM32F407  中断初始化 手机看文章 扫描二维码
随时随地手机看文章

void Interrupt_Init(void)

{

GPIO_InitTypeDef  GPIO_InitStructure;

NVIC_InitTypeDef   NVIC_InitStructure;

EXTI_InitTypeDef   EXTI_InitStructure;

//1.IO初始化

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); 

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;  

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //普通输入模式

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //100M

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉

GPIO_Init(GPIOF, &GPIO_InitStructure);    //初始化GPIOF2,3,4

//2.开启SYSCFG

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);      //使能 SYSCFG 时钟

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF, EXTI_PinSource2);

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF, EXTI_PinSource3);

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF, EXTI_PinSource4);

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF, EXTI_PinSource5);

//3.初始化线上中断,设置触发方式 

EXTI_InitStructure.EXTI_Line = EXTI_Line2; 

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  

EXTI_InitStructure.EXTI_LineCmd = ENABLE; 

EXTI_Init(&EXTI_InitStructure); 

 

EXTI_InitStructure.EXTI_Line = EXTI_Line3; 

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  

EXTI_InitStructure.EXTI_LineCmd = ENABLE; 

EXTI_Init(&EXTI_InitStructure); 

 

EXTI_InitStructure.EXTI_Line = EXTI_Line4; 

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; 

EXTI_InitStructure.EXTI_LineCmd = ENABLE; 

EXTI_Init(&EXTI_InitStructure); 

EXTI_InitStructure.EXTI_Line = EXTI_Line5; 

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; 

EXTI_InitStructure.EXTI_LineCmd = ENABLE; 

EXTI_Init(&EXTI_InitStructure); 

//4.配置中断分组

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;          

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级 2,  

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //响应优先级 2 

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //使能外部中断通道  

NVIC_Init(&NVIC_InitStructure);      

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;          

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级 2,  

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03; //响应优先级 3 

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //使能外部中断通道  

NVIC_Init(&NVIC_InitStructure);      

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;          

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级 2,  

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x04; //响应优先级 4 

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //使能外部中断通道  

NVIC_Init(&NVIC_InitStructure);      

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;          

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级 2,  

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x05; //响应优先级 5 

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //使能外部中断通道  

NVIC_Init(&NVIC_InitStructure);      

}

void EXTI2_IRQHandler(void)

{

if (EXTI_GetITStatus(EXTI_Line2) != RESET)

{

EXTI_ClearITPendingBit(EXTI_Line2);

//TODO:

EXTI_ClearITPendingBit(EXTI_Line2);

}   

}

void EXTI3_IRQHandler(void)

{

if (EXTI_GetITStatus(EXTI_Line3) != RESET)

{

EXTI_ClearITPendingBit(EXTI_Line3);

//TODO:

EXTI_ClearITPendingBit(EXTI_Line3);

}   

}

void EXTI4_IRQHandler(void)

{

if (EXTI_GetITStatus(EXTI_Line4) != RESET)

{

EXTI_ClearITPendingBit(EXTI_Line4);

//TODO:

EXTI_ClearITPendingBit(EXTI_Line4);

}   

}

void EXTI9_5_IRQHandler(void)

{

if (EXTI_GetITStatus(EXTI_Line5) != RESET)

{

EXTI_ClearITPendingBit(EXTI_Line5);

//TODO:

EXTI_ClearITPendingBit(EXTI_Line5);

}   

}


关键字:STM32F407  中断初始化 引用地址:STM32F407中断初始化代码

上一篇:单片机通过光耦控制继电器电路
下一篇:stm32cubemx生成的代码灯不会亮的总结

推荐阅读最新更新时间:2024-03-16 16:15

STM32F407各定时器的时钟频率
TIM1、TIM8~TIM11的时钟为APB2时钟的两倍即168M,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍即84M。
[单片机]
<font color='red'>STM32F407</font>各定时器的时钟频率
Stm32F407时钟要更改的几个地方
外接晶振25M,假如要将系统时钟设为168Mhz 打开 system_stm32f4xx.c文件 /************************* PLL Parameters *************************************/ #if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx) /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */ #define PLL_M
[单片机]
STM32F407 定时器四路PWM代码
/********CYSY_Kiti1013***********/ void TIM4_PWM_Init(u16 arr,u16 psc)//PD12 PD13 PD14 PD15 { RCC- APB1ENR|=1 2;//使能TIM4 RCC- AHB1ENR|=1 3;//使能GPIOD GPIO_Set(GPIOD,PIN12,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); GPIO_Set(GPIOD,PIN13,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); GPI
[单片机]
基于STM32F407的FatFs文件系统在SD卡驱动上的移植
最近在做SD卡驱动,以前移植过efsl,觉得用的人不是很多,现在移植个FatFs,也跟上队伍。 第一步,保证SD卡底层驱动函数正确,包括SD卡初始化、SD扇区读写等。 第二步,下载FatFs源码,名为ff9b.zip,解压在src文件夹中可以得到diskio.c、ff.c、以及\option\cc936.c这三个源码文件,在STM32F407工程文件中创建FatFs文件夹,加入这几个源码以及相应头文件,并且在系统Include Path中加入这个文件夹的位置,以编译时找到其头文件。 第三步开始移植。diskio.c这个文件中定义了fatfs文件系统与硬件存储器之间的接口函数,供文件系统调用,包
[单片机]
stm32f407】SPI实验 驱动W25Q128
一.SPI介绍 SPI 是英语SerialPeripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的 管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种 通信协议,STM32F4也有SPI接口。下面我们看看SPI的内部简明图 SPI接口一般使用4条线通信: MISO 主设备数据输入
[单片机]
【<font color='red'>stm32f407</font>】SPI实验 驱动W25Q128
基于STM32F407的图像远程采集终端
本文阐述一种基于STM32F407的图像远程采集终端,分别从终端采集硬件设计和终端采集软件设计两方面进行论述,并借助实验验证该采集终端的有效性和合理性。 1、终端采集硬件设计 系统的主体框图如图1所示,它主要由STM32F407芯片、OV7670CMOS图像传感器和上位机软件等几个重要部分组成。STM32F407是整个远程采集终端的核心,起到了承上启下的关键作用,一方面它将完成底层信号的获取和预处理,另一方面它将通过网络将采集到的彩色图像数据实时传送到上位机,本文将重点介绍这两部分的内容。 图1 系统主体框图 1.1、STM32F407与OV7670的硬件连接 在图2中,利用STM32F407的PH9~PH12、PH1
[单片机]
基于<font color='red'>STM32F407</font>的图像远程采集终端
探讨STM32F407+KS103超声波模块测距
本文介绍基于STM32F407的KS103超声波模块的使用,包含使用注意事项以及代码配置,同时会附上本人在开发时遇到的问题以及解决方法。 KS103模块使用串口/IIC接口与主机通信,自动响应主机的iic/串口控制指令。 包含温度补偿的距离探测,同时可以在1ms内检测光强。 探测范围 1cm~800cm及 1cm~1000cm(10 米) 5s 未收到 I2C 控制指令自动进入 uA 级休眠,并可随时被主机 I2C 控制指令唤醒 TTL串口模式 在 KS103 上连线引脚上标识有:VCC、SDA/TX、SCL/RX、GND 及 MODE。模块在上电之前,MODE 需要接 0V 地,上电后模块将工作于 TTL 串口模式。
[单片机]
探讨STM32F407+KS103超声波模块测距
STM32F407学习记录2:SysTick嘀嗒定时器学习
Systick嘀嗒定时器是一个24位的递减计数器。该定时器的时钟源可以是内部时钟,也可以是外部时钟。 M4的Systick有四个寄存器,分别是 1. Systick control and status register(STK_CTRL) 控制和状态寄存器; 2. Systick reload value register(STK_LOAD) 重装数值寄存器; 3. Systick current value register(STK_VAL) 当前计数值寄存器; 4. Systick calibration value register(STK_CALIB) 校准数值寄存器。 STM32F4中Systick相关函数主要在mis
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved