正点原子STM32F4外部中断实验

发布者:Huanle666最新更新时间:2019-09-09 来源: eefocus关键字:正点原子  STM32F4  外部中断 手机看文章 扫描二维码
随时随地手机看文章

最多只能有7个外部中断。


下面这个是GPIO口初始化。


void KEY_Init(void)

{

    

    GPIO_InitTypeDef  GPIO_InitStructure;


  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIOA,GPIOE时钟

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; //KEY0 KEY1 KEY2对应引脚

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

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100M

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉

  GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE2,3,4

    

     

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//WK_UP对应引脚PA0

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN ;//下拉

  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA0

 

}


还有下图这一步,使能这个SYSCFG时钟,因为中断线用到了这个时钟

//外部中断初始化程序

//初始化PE2~4,PA0为中断输入.

void EXTIX_Init(void)

{

NVIC_InitTypeDef   NVIC_InitStructure;

EXTI_InitTypeDef   EXTI_InitStructure;

KEY_Init(); //按键对应的IO口初始化

 

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

 

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource2);//PE2 连接到中断线2

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource3);//PE3 连接到中断线3

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource4);//PE4 连接到中断线4

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);//PA0 连接到中断线0

  /* 配置EXTI_Line0 */

  EXTI_InitStructure.EXTI_Line = EXTI_Line0;//LINE0

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发  触发方式 

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE0  

  EXTI_Init(&EXTI_InitStructure);//配置

/* 配置EXTI_Line2,3,4 */

EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3 | 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);//配置

 

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//外部中断0

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//抢占优先级0

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

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

  NVIC_Init(&NVIC_InitStructure);//配置

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;//外部中断2

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;//抢占优先级3

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

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

  NVIC_Init(&NVIC_InitStructure);//配置

NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;//外部中断3

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

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

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

  NVIC_Init(&NVIC_InitStructure);//配置

NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;//外部中断4

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//抢占优先级1

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

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

  NVIC_Init(&NVIC_InitStructure);//配置

   

}

 

中断状态判断中断是否发生


外部中断只能手动清0  

下面回顾外部中断的配置步骤  如果我们的IO口是拉低的,那么可以配置成高电平触发。 这样我们的外部中断配置就完成了。

 

至此我们就完成外部中断实验的简单配置。

关键字:正点原子  STM32F4  外部中断 引用地址:正点原子STM32F4外部中断实验

上一篇:STM32l151带MPU6050中断唤醒并发送数据到云平台
下一篇:正点原子STM32F4中断优先级管理(10)

推荐阅读最新更新时间:2024-10-30 18:59

STM32f4---电容触摸按键实验代码(02)
//定时器 2通道2 输入捕获配置 //arr:自动重装值 //psc:时钟预分频数 void TIM2_CH1_Cap_Init(u32 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM2_ICInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //TIM2时钟使能 RCC_AHB1PeriphClockCmd(RCC_AHB1
[单片机]
从LCD电极读数的单片机接口技术
   摘要 以测量仪表中常见的时分割驱动法驱动的段式LCD显示器为例,分析LCD显示器的电极连接结构和驱动信号波形;介绍单片机读取仪表LCD读数的接口电路。此接口电路应用于笔者开发的自动血压监控仪的研制及临床应用项目中,由8031单片机读取血压计的收缩压、舒张压、心率以及充气和放气时瞬时压强。实验证明,此接口电路工作稳定、可靠。    关键词 LCD电极 读数 时分割驱动法 接口设计   通过测量仪表拾取被测信号是单片机前向通道设计中常用的数据采集方式。通常,接口电路从仪表电路中取得相关的模拟信号,经过A/D转换或V/F 转换送入单片机;或者取得一个频率信号,经整形后送入单片机 。然而,有些测量仪表电路中可能找不到这样的信号。
[单片机]
STM32F107VCT6的外部中断配置
存在的问题:如果将GPIO15管脚用于外部中断功能,但中断处理函数中默认找不到对应的中断处理函数。 main.c文件中 int main(void) { SystemInit(); __disable_irq(); RCC_Configuration(); EXTI_Configuration(); __enable_irq(); IWWDG_Configuration(); while (1) { WDG_Func(); //每250ms喂狗一次 } } hw_config硬件配置文件中 void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitS
[单片机]
分享关于stm32f407定时器时钟频率的问题
上午想要用Timer10做相对精确的延时功能,但是用示波器发现实际延时数值总是只有一半,百思不得其解。 仔细查阅各处资料结合实际研究后对stm32f407的14个定时器的时钟做一个总结: 从时钟树中我们可以得知(时钟树的图片可以直接参考6楼,感谢6楼xkwy补上的图): (1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线 (2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线 从STM32F4的内部时钟树可知,当APB1和APB2分频数为1的时候,TIM1、
[单片机]
利用RTSI总线实现运动控制和数据采集之间的同步
   摘要: 为了提高测量精度,许多测试系统要求在连续运动中实时同步进行数据采集。根据同步工作原理,利用RTSI总线技术和LabWindows/CVl编程实现了运动控制和数据采集之间的同步,实验结果表明该方法在提高测试精度方面是有效的。    关键词: 同步;RTSI总线;运动控制;数据采集    1 引言   许多测试系统要求在连续运动的同时能实时进行数据采集。如果测试过程不连续,或者测试位置在前而采集在后,二者之间不能同步,将不可避免地产生误差。为了提高测量精度,运动控制和数据采集必须实现同步。目前,美国NI公司提供的PCI总线E系列数据采集卡和运动控制卡都嵌入了RTSI(Real-Time System Integra
[应用]
STM32F4之PWM设计
一,何为PWM? PWM的全称为:Pulse Width Modulation,简称脉宽调制 百度来的:脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。 而简单的来说就是,我们可以使用处理器输出自己想要的占空比的矩形波,去达到控制模拟电路等目的。 二,STM32中拥有PWM 在STM32F407的芯片手册中有描述:12个16位的定时器,2个32位的定时器,每个定时器可以由4个通道去产生PWM 三,STM32中的PWM的原理 先说PWM的关键指标:周期,以及占空比 1.PWM周期:就是通过配置定时器的溢出时间(即图中ARR的值),当计数器(CNT寄存器)计数的值与ARR的
[单片机]
<font color='red'>STM32F4</font>之PWM设计
STM32L0xx_Hal_Driver库的使用--EXTI
单片机型号:STM32L051C8T6 开发环境MDK5.12 库版本:STM32L0xx_HAL_Driver V1.1.0 主机环境:Windows XP 之前碰到的串口问题还没解决,现在在学习EXTI时又遇到了新的问题。。。很是无语 在编写EXTI时因为需求特殊需要统计一些IO口的信号频率,信号分为两大类共3种,Oscillator信号其频率在256HZ左右,M+和M-信号比较特殊其在2S之内会有26个左右的波峰,因此对其信号的统计是统计2S,Oscillator是统计1S。管脚分配如下 参考库中EXTI的例程,编辑代码,先统计Oscillator信号,再统计M+信号,最后统计M-信号。在主循环中输出
[单片机]
STM32L0xx_Hal_Driver库的使用--<font color='red'>EXTI</font>
擦掉STM32F429芯片上的数据的一个方法
刚入手一块STM32F429Discovery。手痒痒的,准备写个程序进去。一不小心,把MCU的调试接口SW、JTAG全部给禁用了。这下可坏了,写不进去程序,擦不掉数据。愁的某家一头大汗。突然想起了当年玩F1的时候有个IAP功能,F4应该也有着功能的。于是找到了这个: http://www.mcuisp.com/chinese mcuisp web/index.htm 没有针对F4的软件。下载F1的FlyMCU IAP软件之后,直接连还是连不上,软件是一直在等待芯片回应。 之后查了下ST的文档AN2606,STM32™ microcontroller system memory boot mode。看见这样一段换: The
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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