STM32应用简章之外部中断

发布者:幸福约定123最新更新时间:2019-09-03 来源: eefocus关键字:STM32  外部中断 手机看文章 扫描二维码
随时随地手机看文章

①初始化IO口为输入。


       GPIO_Init();


②   开启IO口复用时钟。


       RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);


③设置IO口与中断线的映射关系。


        void GPIO_EXTILineConfig();


④初始化线上中断,设置触发条件等。


       EXTI_Init();


⑤配置中断分组(NVIC),并使能中断。


       NVIC_Init();


⑥   编写中断服务函数。


      EXTIx_IRQHandler();


⑦清除中断标志位


      EXTI_ClearITPendingBit();


void EXTIX_Init(void)

{

 

  EXTI_InitTypeDef EXTI_InitStructure;

  NVIC_InitTypeDef NVIC_InitStructure;

 

    KEY_Init(); // 按键端口初始化

 

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟

 

    //GPIOE.2 中断线以及中断初始化配置   下降沿触发

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);

 

  EXTI_InitStructure.EXTI_Line=EXTI_Line2; //KEY2

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;

  EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

 

   //GPIOE.3   中断线以及中断初始化配置 下降沿触发 //KEY1

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);

  EXTI_InitStructure.EXTI_Line=EXTI_Line3;

  EXTI_Init(&EXTI_InitStructure);   //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

 

   //GPIOE.4   中断线以及中断初始化配置  下降沿触发 //KEY0

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);

  EXTI_InitStructure.EXTI_Line=EXTI_Line4;

  EXTI_Init(&EXTI_InitStructure);   //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

 

 

   //GPIOA.0   中断线以及中断初始化配置 上升沿触发 PA0  WK_UP

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0); 

 

  EXTI_InitStructure.EXTI_Line=EXTI_Line0;

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;

  EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

 

 

  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //使能按键WK_UP所在的外部中断通道

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

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

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

  NVIC_Init(&NVIC_InitStructure); 

 

    NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能按键KEY2所在的外部中断通道

  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 = EXTI3_IRQn; //使能按键KEY1所在的外部中断通道

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

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01; //子优先级1 

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

  NVIC_Init(&NVIC_InitStructure);    //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

 

NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; //使能按键KEY0所在的外部中断通道

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

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; //子优先级0 

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

  NVIC_Init(&NVIC_InitStructure);    //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

 

}


关键字:STM32  外部中断 引用地址:STM32应用简章之外部中断

上一篇:STM32应用简章之串口配置
下一篇:STM32应用简章之通用定时器

推荐阅读最新更新时间:2024-11-06 00:20

STM32串口通信基本原理详解
设备之间通信的方式 一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。并行与串行通信的区别如下表所示。 串行通信的分类 1、按照数据传送方向,分为: 单工:数据传输只支持数据在一个方向上传输; 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。 2、按照通信方式,分为: 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。 异步通信:不带时钟同步信号。比如:UART(通用异步
[单片机]
<font color='red'>STM32</font>串口通信基本原理详解
STM32 定时器2+串口
定时器2+串口发送 USART.c #include STM32Lib\\stm32f10x.h /********************************************** **串口配置函数,这里使能了两个串口,其中串口2使用了中断接收模式 ** **********************************************/ u8 Uart1_Get_Flag; //串口1接收到数据标志 u8 Uart1_Get_Data; //串口1接收的数据 void USART_Configuration(void) { GPIO_InitTypeDef GPIO_
[单片机]
<font color='red'>STM32</font> 定时器2+串口
意法半导体市场领先的 STM32 微控制器加快无线产品开发
意法半导体市场领先的 STM32 微控制器加快无线产品开发 扩展后的STM32Cube 生态系统可支持 STM32WB 无线 MCU 新的 STM32CubeWB 固件,升级的编程器和射频测试工具 改进的无线功耗估算器准确计算电池续航时间 中国,2021 年 9 月24 日 -- 服务多重电子应用领域的全球半导体领导者意法半导体(STMicroelectronics,简称ST;) 发布了新的STM32WB无线微控制器(MCU)开发工具和软件,为智能建筑、智能工业和智能基础设施的开发者降低设计经济、节能的无线设备的难度。 意法半导体的高集成度 STM32WB 单片集成一个 2.4GHz射频收发器和Arm®
[单片机]
意法半导体市场领先的 <font color='red'>STM32</font> 微控制器加快无线产品开发
STM32F1x系列——外部中断
一 通用定时器的工作过程如下图: 二 计数器模式: (1)向上计数模式:计数器从0计数到自动加载值,然后重新从0开始计数并且产生一个计数器溢出事件 (2)向下计数模式:计数器从自动装入的值开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出的事件 (3)中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1,并且产生一个计数器溢出事件,然后再从0开始计数 通用定时器常用寄存器和库函数: (1)定时器使能函数:void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState) (2)定
[单片机]
STM32F1x系列——<font color='red'>外部中断</font>
单片机外部中断的电平触发和边沿触发程序
折腾了一上午,没有人带只能自己摸索了........ 接法:JP10接J12;JP8接JP16;P3^2接GND;P2^0接LED; 只有打开全局开关,其它各位的开关才可以开启。 所有开关赋值为1则开,赋值为0则关。 位序号 D0 D1 D2 D3 D4 D5 D6 D7 说明 外部中断0 定时/计数0 外部中断1 定时/计数1 串行口中断 定时/计数2 (52单片机) 无效位
[单片机]
单片机<font color='red'>外部中断</font>的电平触发和边沿触发程序
STM32例程之USB HID双向数据传输
程序功能 将STM32的USB枚举为HID设备。 STM32使用3个端点,端点0用于枚举用,端点1和2用于数据的发送和接收。 端点长度为64,也就是单次最多可以传输64个字节数据。 STM32获取上位机下发的数据并将该数据通过USB原样返回,同时将数据打印输出。 上位机程序通过调用windows的API实现对HID设备的读写控制。 USB接口原理图: HID枚举成功: 程序效果图 图一 上位机程序运行图 图二 STM32串口打印输出 图三 Bus Hound抓取的数据 程序部分代码 STM32的报告描述符: const uint8_t CustomHID_ReportDescriptor = { 0
[单片机]
<font color='red'>STM32</font>例程之USB HID双向数据传输
STM32学习009_全局变量的定义和声明
今天在写SysTcik_Handler()这个中断函数时,总是报错,明明在开头定义的全局变量extern u16 ntime,(ntime--写在stm32f10x_it.c的systick中断函数中)但是编译时总是报错,百度之后才有了解决方法, 之前也注意到过extern变量,但是没有仔细思考过它的使用方法,今天碰到了,一定要把它弄明白,把这个关键字的一般作用弄清楚(仅仅是一般作用,C的博大精深不敢妄谈); 当你建立一个头文件库时,经常会遇到一个问题,就是在A文件中定义一个temple变量,想把它的值传递给B文件使用,但是A文件操作中函数又不可以带返回参数,比如说中断服务函数,那该怎么办?如果你把temple定义在A中,然后
[单片机]
<font color='red'>STM32</font>学习009_全局变量的定义和声明
STM32固件库SYSTEM文件夹介绍
SYSTEM 文件夹里面的代码,此文件夹里面的代码由 ALIENTEK 提供,包含了几乎每个实验都可能用到的延时函数,位带操作,串口打印代码等。SYSTEM 文件夹下包含了 delay、 sys、 usart 等三个文件夹。分别包含了 delay.c、 sys.c、usart.c 及其头文件 delay.h,sys.h,usart.h。 delay 文件夹代码介绍 delay 文件夹内包含了 delay.c 和 delay.h 两个文件,这两个文件用来实现系统的延时功能,其中包含 3 个函数: void delay_init(u8 SYSCLK); //该函数用来初始化 2 个重要参数:fac_us 以及 fac_ms;同时把
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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