当前位置:首页 > 单片机 > 单片机
[导读]STM32的GPIO可以作为中断输入使用,这样增强了实时检测性,可以用于外部按键或是触控等使用。如果使用,其实不难,这里使用标准的固件库,加入外部中断的库文件:在stm32f10x_conf.h 中,打开#include "stm32f10x_ex

STM32的GPIO可以作为中断输入使用,这样增强了实时检测性,可以用于外部按键或是触控等使用。如果使用,其实不难,这里使用标准的固件库,加入外部中断的库文件:


在stm32f10x_conf.h 中,打开#include "stm32f10x_exti.h"


这里通过外部触控的方式,点亮或是关闭一个LED灯的例子,熟悉一下STM32F103 系列外部中断的使用。


我这里使用的GPIO为:PC11,头文件的GPIO宏定义为:


/****EXTIControl****/

voidEXTI_GPIO_Init(void);

#defineRCC_TOUCHOUTRCC_APB2Periph_GPIOC

#defineTOUCHOUT_PORTGPIOC

#defineTOUCHOUT_PINSGPIO_Pin_11

#defineTouchOut()GPIO_ReadInputDataBit(TOUCHOUT_PORT,TOUCHOUT_PINS)


外部中断函数实现如下:


voidEXTI_GPIO_Init(void)

{

NVIC_InitTypeDefNVIC_InitStructure;

EXTI_InitTypeDefEXTI_InitStructure;

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_TOUCHOUT|RCC_APB2Periph_AFIO,ENABLE);//打开GPIOAFIO的时钟

GPIO_InitStructure.GPIO_Pin=TOUCHOUT_PINS;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;

GPIO_Init(TOUCHOUT_PORT,&GPIO_InitStructure);

EXTI_ClearITPendingBit(EXTI_Line11);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource11);//PC11为GPIOC的PIN11

EXTI_InitStructure.EXTI_Line=EXTI_Line11;//PC11,为:EXTI_Line11

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising_Falling;//中断方式为上升与下降沿

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init(&EXTI_InitStructure);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//NVIC

NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

}



下面为中断函数的实现方式:


voidEXTI15_10_IRQHandler(void)//这里为:EXTI15_10(外部中断号的10~15都在这里实现)

{

if(EXTI_GetITStatus(EXTI_Line11)!=RESET)//这里为判断相应的中断号是否进入中断,如果有多个中断的话。

{

EXTI_ClearITPendingBit(EXTI_Line11);//清中断

if(Change_Flag!=TouchOut())

LED(ON);

else

LED(OFF);

}

}


因此,就实现了外部中断的控制。按键,如果只有一两个,不想用轮循扫描的方式,就可以用外部中断的方式判断。这样可以增强实时性,也不过多占用CPU资源。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

树莓派,(英语:Raspberry Pi,简写为RPi,别名为RasPi / RPI)是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux。随着Windows 10 IoT的发布,用户可以用上运行...

关键字: 树莓派 gpio gpio编程

MCS-51单片机有两个外部中断源INT0和INT1,它们分别在P3.2和P3.3引脚出现低电平或下降沿信号时向单片机发出中断请求。外部中断可用于检测单片机外部发生的事件,如键盘敲击和特定脉冲发生的次数等。

关键字: 51单片机 外部中断

外部中断是单片机实时地处理外部事件的一种机制。具体指的是,当某种外部事件发生时,单片机的中断系统迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后,又返回被中断的程序处,继续执行下去。这里我们以Nuc...

关键字: MCU 外部中断 ST

STM32CubeMX是官方推荐的配置软件,而HAL库也是取代之前的库函数的通用库,所以STM32CubeMX+HAL库是当前主流的工程创建方式,HAL库的可移植性也高于被取代的库函数。 之前在[程序员小哈]的公众号中写...

关键字: LED 外部中断

  引言   根据世界卫生组织公布的数据,全世界目前有3 000多万人目盲,其中约有18%是中国人。针对盲人行动不便的情况,本文介绍了一种基于超声相控阵的盲人避障系统。   本文

关键字: stm32f103 超声相控阵 导盲系统

  随着IPTV和多媒体业务的迅速发展,用户对接入带宽的要求不断增加,目前的铜线接入技术很难满足用户对高带宽、双向传输、及安全性方面的要求。在2010年以前,FTTB是中国主流的FTTx建网模式

关键字: stm32f103 张力传感器

引言 随着互联网技术、无线通信技术以及生物传感器技术的进一步发展,可供病人在医院、家庭等环境中使用的可穿戴健康监测预警系统已成为国内外研究人员关注的热点。 本文设计了一种应用互联

关键字: stm32f103 互联网 脉搏监测

致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下友尚推出基于意法半导体(ST)STM32F103与德州仪器(TI)CC2564的智能车载双模蓝牙方案WLT2564S。该车载

关键字: stm32f103 蓝牙

2016年8月16日,致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下友尚推出基于意法半导体(ST)STM32F103与德州仪器(TI)CC2564的智能车载双模蓝牙方案W

关键字: cc2564 stm32f103 大联大友尚

1.ARM中一些常见英文缩写解释 MSB:最高有效位; LSB:最低有效位; AHB:先进的高性能总线; VPB:连接片内外设功能的VLSI外设总线; EMC:外部存储器控制器; MAM:存储器加速模块; VIC:向量中...

关键字: ARM THUMB I2C 外部中断
关闭