STM32F030 IO口外部中断应用

//==文件exit.h============================================================

#ifndef __EXIT_H
#define	__EXIT_H

#include "stm32f0xx.h"

extern void EXIT_HALL_Init(void);

#endif /* __EXIT_H */

//==文件exit.c============================================================

#include "global.h"
#include "exit.h"

//========霍尔 外部中断 初始化===========================
void EXIT_HALL_Init(void)
{
		GPIO_InitTypeDef GPIO_InitStruct; //GPIO 定义
  	EXTI_InitTypeDef EXTI_InitStruct; //外部中断定义
	  NVIC_InitTypeDef NVIC_InitStruct; //嵌套中断定义

	  /* config the extiline(PB3 PB4 PB5) clock and AFIO clock */
	  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
	  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);

    /* Configyre P[A|B|C|D|E]3  NIVC  */
		NVIC_InitStruct.NVIC_IRQChannel = EXTI2_3_IRQn;
		NVIC_InitStruct.NVIC_IRQChannelPriority = 0x00;
		NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
		NVIC_Init(&NVIC_InitStruct);

    /* Configyre P[A|B|C|D|E]4 5  NIVC  */
		NVIC_InitStruct.NVIC_IRQChannel = EXTI4_15_IRQn;
		NVIC_InitStruct.NVIC_IRQChannelPriority = 0x00;
		NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
		NVIC_Init(&NVIC_InitStruct);

	  	/* EXTI line gpio config(PB3 PB4 PB5) */
		GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
	  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
		GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_2;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;//GPIO_PuPd_UP; // 上拉输入
		GPIO_Init(GPIOB, &GPIO_InitStruct);

		/* EXTI line(PB3 PB4 PB5) mode config */
		EXTI_ClearITPendingBit(EXTI_Line3);
		EXTI_ClearITPendingBit(EXTI_Line4);
		EXTI_ClearITPendingBit(EXTI_Line5);		

		SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource3);
		SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource4);
		SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource5);

		EXTI_InitStruct.EXTI_Line = EXTI_Line3|EXTI_Line4|EXTI_Line5;
		EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
		EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling ;//EXTI_Trigger_Falling;//上 下降沿中断
		EXTI_InitStruct.EXTI_LineCmd = ENABLE;
		EXTI_Init(&EXTI_InitStruct); 

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-04 16:53:52

STM32F030 IO口外部中断应用的相关文章

STM32 外部中断简介

文章来源:http://blog.chinaunix.net/uid-24219701-id-4088004.html STM32  IO 口中断的一些基础概念.STM32 的每个 IO 都可以作为外部中断的中断输入口,这点也是 STM32 的强大之处.STM32F103 的中断控制器支持 19 个外部中断/事件请求.每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置.STM32F103 的19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断. 线 16:连接到 PVD 输出

掌握所有IO口的外部中断

外部中断配置流程 1.初始化IO口工作在普通IO.上拉输入状态. 2.首先开IO口组中断(P0IE=1.P1IE=1.P2IE=1): 3.开组内对应的具体某IO口中断(P0IEM.P1IEM.P2IEM该寄存器里面的对应位对应相应的IO口): 4.上升沿还是下降沿触发(PICTL寄存器): 5.开CPU总中断EA=1; #include <cc2530.h> void main() { //步骤1 P0SEL &=0xDF;//P05口表示为普通IO口 P0DIR &=0xD

3、通过按键S1产生外部中断改变LED1状态(it&#39;s 中断-寄存器和中断子程序)

通过按键S1产生外部中断改变LED1状态 1 /**************************************************************************** 2 * 文 件 名: main.c 3 * 作 者: Amo [ www.amoMcu.com 阿莫单片机] 4 * 修 订: 2014-04-08 5 * 版 本: 1.0 6 * 描 述: 通过按键S1产生外部中断改变LED1状态 7 *****************************

STM8L外部中断 为何 死循环 寄存器操作

STM8L 系列单片机是 ST公司推出的低功耗单片机,与STM8S系列相比功耗降低了很多,但内部结构也删减了很多,使用时一定要仔细阅读手册.  这是第一次使用STM8,实现功能不是很复杂就没想研究库函数,准备直接控制寄存器操作,没想到本人 因为中断问题纠结了大半天. 在外部中断中这一点很不同, STM8S自动清除外部中断,而STM8L是需要软件清除, 清除标志位的寄存器根据设置而不同,下面有说明. 下面以STM8L外部中断 PB1为例 说明外部中断 寄存器操作 设置外部中断有下面几步: 第一步.

2440 外部中断

2440外部中断的使用 1.设置io为外部中断引脚 通过2440数据手册可以知道需要使用io的外部中断需要配置那些位 a.通过上面的表格可以看出,如果要使用io的外部中断需要把对应的位设置为10 例如:GPF0和GPF2这两个io需要使用外部中断 GPFCON &= ~((3<<0)|(3<<4));//清除相应位 GPFCON |= ((2<<0)|(2<<4));//设置相应位为外部中断引脚 b.通过上面这个表格可以看出,需要设置外部中断的触发,

STM32F030如何正确配置IO口的复用功能

本文所使用的单片机型号为STM32F030C8T6. 在030系列的单片机中,PA2引脚除了作为普通的IO引脚用作输入输出功能以外,还可以作为内部外设串口1,串口2,定时器15通道1这三个外设的功能引脚.那么如何配置这个IO口用作哪一种外设的功能引脚呢?查找STM32F030数据手册的31-32页,看到有这么两个表格, <Table 12. Alternate functions selected through GPIOA_AFR registers for port A> <Tabl

STM32F4——NVIC中断优先级及外部中断

NVIC中断优先级 一.简介: CM4内核可以支持256个中断,包括16个内核中断和240个外部中断,256级的可编程中断设置.对于STM32F4没有用到CM4内核的所有东西,只是用到了一部分,对于STM32F40和41系列共有92个中断,其中有10个内核中断和82个可屏蔽中断,常用的为82个可屏蔽中断. 二.相关寄存器: ISER[8]-中断使能寄存器组,用来使能中断,每一位控制一个中断,由于上面已经说明了控制82个可屏蔽的中断,因此利用ISER[0~2]这三个32位寄存器就够了.一下的几个寄

LPC1768外部中断与GPIO中断

LPC1768的外部中断严格来说只有四个,分别是EINT0,EINT1,EINT2,EINT3,技术手册上有如下说明 控制这四个外部中断靠以下寄存器 这三个寄存器的0 1 2 3位分别代表中断的0 1 2 3,EXTINT寄存器表示中断是否发生,在发生中断的时候该寄存器会置位,可以通过写1清零,EXTMODE寄存器表示触发模式,有电平触发和变化沿触发两种,EXTPOLAR与EXTMODE,在电平触发模式下,决定高电平还是低电平触发,在变化沿触发的情况下决定上升沿还是下降沿触发 这三个中断分别相关

中断之外部中断

. ARM Cortex M3共有256个中断. STM32F103CB共有43个外部中断和16个内部中断. 具有相同数值编号的IO口被分配为同一组,共用一条中断请求线,如下图: 所以共有15条中断线,另外 ●EXTI线16连接到PVD输出●EXTI线17连接到RTC闹钟事件●EXTI线18连接到USB唤醒事件 寄存器:1.外部中断配置寄存器    AFIO_EXTxCR1------->用于选择输入中断源  Pin 0..3 AFIO_EXTxCR2------->用于选择输入中断源  Pi