STM32f4---外部中断实验代码(01)

发布者:bullfish最新更新时间:2018-09-29 来源: eefocus关键字:STM32f4  外部中断  实验代码 手机看文章 扫描二维码
随时随地手机看文章

exit.c文件总共包含5 个函数。一个是外部中断初始化函数void EXTIX_Init(void),另外 4个都是中断服务函数。

void EXTI0_IRQHandler(void)是外部中断0 的服务函数,负责WK_UP 按键的中断检测;

void EXTI2_IRQHandler(void)是外部中断2 的服务函数,负责KEY2按键的中断检测;  

void EXTI3_IRQHandler(void)是外部中断3 的服务函数,负责KEY1按键的中断检测;

void EXTI4_IRQHandler(void)是外部中断4 的服务函数,负责KEY0按键的中断检测;

extic.c代码如下:

//外部中断0服务程序

void EXTI0_IRQHandler(void)

{    

delay_ms(10); //消抖

  if(WK_UP==1)    

  {   BEEP=!BEEP; //蜂鸣器翻转  

  }      

    EXTI_ClearITPendingBit(EXTI_Line0); //清除 LINE0上的中断标志位  

}  

//外部中断2服务程序

void EXTI2_IRQHandler(void)

{    

delay_ms(10); //消抖

  if(KEY2==0)     

  {   LED0=!LED0;  

  }      

    EXTI_ClearITPendingBit(EXTI_Line2);//清除 LINE2上的中断标志位  

}

//外部中断3服务程序

void EXTI3_IRQHandler(void)

{    

delay_ms(10); //消抖

  if(KEY1==0)    

  { LED1=!LED1;

  }      

    EXTI_ClearITPendingBit(EXTI_Line3);  //清除 LINE3上的中断标志位   

}

//外部中断4服务程序

void EXTI4_IRQHandler(void)

{   

  delay_ms(10); //消抖

  if(KEY0==0)    

  {  LED0=!LED0;  

    LED1=!LED1;  

  }      

    EXTI_ClearITPendingBit(EXTI_Line4);//清除 LINE4上的中断标志位   

}      

//外部中断初始化程序

//初始化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_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_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


关键字:STM32f4  外部中断  实验代码 引用地址:STM32f4---外部中断实验代码(01)

上一篇:STM32f4---定时器中断实验代码
下一篇:STM32f4---串口通信实验代码(02)

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

STM32F407ZGT6芯片时钟系统模块介绍
STM32F4时钟系统的知识在《STM32F4中文参考手册》第六章复位和时钟控制章节有非常详细的讲解,网上关于时钟系统的讲解也有很多,讲不出啥特色,时钟模块是芯片非常重要的组成部分,我们必然要提到时钟系统的知识。这些知识也不是什么原创,纯粹根据官方提供的中文参考手册和自己的应用心得来总结的,如有不合理之处望大家谅解。 STM32F4时钟树概述 众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。STM32F4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的
[单片机]
<font color='red'>STM32F4</font>07ZGT6芯片时钟系统模块介绍
S3C2440中断体系结构:外部中断实验
1 SUBSRCPND和SRCPND表明有哪些中断被触发了 INTSUMMSK和INTMSK寄存器用于屏蔽某些中断 2 中断触发→SUBSRCPND相应位置1→INTSUBMSK未屏蔽→SRCPND相应位置1→ ↑ 中断触发 →若是FIQ中断:INTMOD相应位置1(同一时间,只能有一位置1) →INTMSK未屏蔽→INTPND相应位置1(同一时间,只能有一位置1) 3 读取INTPND或INTOFFSET可以确定中断源 4 清除中断的顺序:SUBSRCPND(相应位写1)→SRCPND(相应位写1)→INTPND
[单片机]
51单片机的外部中断触发方式简介
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。 这个原理很好理解。但应用时需要特别注意的几点: 1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证
[单片机]
51单片机外部中断的问题
前几天在网上看到的一个程序问题。 #include reg51.h unsigned char code a ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char i=0; void delay() { unsigned int i,j; for(i=200;i 0;i--) for(j=200; j 0;j--); } void main() { EA=1; EX0=1; IT0=1; while(1) { if(i==10) i=0; P2=~a ; delay(); i++; } } vo
[单片机]
STM32F4制作一个计算器(一) 大数运算
一、大数的运算算法 使用原子的STM32F4开发板制作一个计算器,类似电脑上的标准型计算器。 在制作界面之前,首先要解决大数运算问题。因为STM32为32位MCU,直接计算最大不过32位,按十进制也就是10位数,显然不够用。 为了方便计算,使用数组储存各位数据,并且低位在前。下面数据结构中,使用指针代替数组,这是为了方便以后与界面函数部分对接。 #define THIS_MAXLEN 50 //数组长度 #define SHOW_MAXLEN 30 //自我调整中使用的最大长度 #define DIV_PREC 20 //除法精度相关 #define RESULT_TYPE signed char #define RE
[单片机]
51单片机之外部中断应用实例(电平触发、边沿触发)
硬件:STC89C52RC 开发工具:Keil uVision4 前言:8051是一款很经典的、历史悠久的单片机,作为一款入门级的单片机8051受到很多初学者的欢迎。89c52是8051系列的成员之一,拥有8K字节程序存储空间,512字节随机数据存储空间;I/O口控制端口、中断功能、定时器及串行接口。下面详细讲述外部中断功能的使用。 外部中断:单片机提供的系统紧急事件的输入控制。事件触发的方式包括输入信号的下降沿触发、低电平触发。当触发中断后,单片机会跳到某一个固定的地址去执行中断服务程序。 外部中断信号由INT0、INT1引脚传送进来,如图所示: 有关中断处理的相关控制寄存器如下: 计时计数器控制寄存器 TCO
[单片机]
51单片机之<font color='red'>外部中断</font>应用实例(电平触发、边沿触发)
NVIC寄存器组中的中断挂起SETPEND与消除CLRPEND,与外部中断挂起寄存器EXTI_PR
STM32的中断控制是分级管理的,CM3内核中的NVIC是顶层,对每个通道都设有1BIT的中断挂起位, 但每个通道可能不止一个中断源,比如EXTI5_9_IRQn,对NVIC而言,只算一个通道,但实际包含有5个中断源, 因此,下层就必须实现对这多个中断源的独立监控,这就是EXTI- PR中的挂起位了。 STM32的中断系统可以理解为分两级管理, 顶层当然是CM3内核强大的NVIC,下层就是形形色色的片上外设了, 对于NVIC来说,它最大可以管理256个不同的中断通道, 这256个中断,内核自留了16个,剩下的通称为外部中断(注意与EXTI不要混淆,EXTI是外部中断中的一小部分,全称为外部线中断),外部中断可以多达240个(具
[单片机]
第47章 STM32F429的SPI 总线应用之SPI Flash的MDK下载算法制作
47.1 初学者重要提示 SPI Flash的相关知识点可以看第31章和32章。 SPI Flash下载算法文件直接采用HAL库制作,方便大家自己修改。 47.2 MDK下载算法基础知识 Flash编程算法是一种用于擦除应用程序或将应用程序下载到Flash的程序代码。MDK本身支持的各种器件都自带下载算法,存放在MDK各种器件的软件包里面,以STM32F4为例,算法存放在KeilSTM32F4xx_DFP2.15.0CMSISFlash(软件包版本不同,数值2.15.0不同),但不支持的需要我们自己制作,本章教程为此而生。 47.2.1 程序能够通过下载算法下载到芯片的核心思想 认识到这点很重要:通过MDK创建一批与地址信
[单片机]
第47章 <font color='red'>STM32F4</font>29的SPI 总线应用之SPI Flash的MDK下载算法制作
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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