STM32实战篇:按键(外部输入信号)触发中断

功能要求

将两个按键分别与引脚PA0、PA1相连接,通过按键按下,能够触发中断响应程序(不需明确功能)。

代码流程如下:


实现代码

cpp 复制代码
#include "stm32f10x.h"                  // Device header

int main()
{
	//开启时钟:GPIO、AFIO
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	//配置GPIO初始化
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;
	GPIO_InitStruct.GPIO_Mode= GPIO_Mode_IPU;
	
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	//设置EXTI引脚映射
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);
	
	//EXTI0通道初始化
	EXTI_InitTypeDef EXTI_InitStruct0;
	EXTI_InitStruct0.EXTI_Line=EXTI_Line0;
	EXTI_InitStruct0.EXTI_Mode=EXTI_Mode_Interrupt;
	EXTI_InitStruct0.EXTI_Trigger=EXTI_Trigger_Rising;
	EXTI_InitStruct0.EXTI_LineCmd=ENABLE;
	
	EXTI_Init(&EXTI_InitStruct0);
	
	//EXTI1通道初始化
	EXTI_InitTypeDef EXTI_InitStruct1;
	EXTI_InitStruct1.EXTI_Line=EXTI_Line1;
	EXTI_InitStruct1.EXTI_Mode=EXTI_Mode_Interrupt;
	EXTI_InitStruct1.EXTI_Trigger=EXTI_Trigger_Rising;
	EXTI_InitStruct1.EXTI_LineCmd=ENABLE;
	
	EXTI_Init(&EXTI_InitStruct1);
	
	//NVIC配置
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	//EXTI0
	NVIC_InitTypeDef NVIC_InitStruct0;
	NVIC_InitStruct0.NVIC_IRQChannel=EXTI0_IRQn;
	NVIC_InitStruct0.NVIC_IRQChannelPreemptionPriority=0;
	NVIC_InitStruct0.NVIC_IRQChannelSubPriority=0;
	NVIC_InitStruct0.NVIC_IRQChannelCmd=ENABLE;
	NVIC_Init(&NVIC_InitStruct0);
	//EXTI1
	NVIC_InitTypeDef NVIC_InitStruct1;
	NVIC_InitStruct1.NVIC_IRQChannel=EXTI1_IRQn;
	NVIC_InitStruct1.NVIC_IRQChannelPreemptionPriority=0;
	NVIC_InitStruct1.NVIC_IRQChannelSubPriority=0;
	NVIC_InitStruct1.NVIC_IRQChannelCmd=ENABLE;
	NVIC_Init(&NVIC_InitStruct1);
	
	while(1)
	{
	}
}

void EXTI0_IRQHandler()
{
	EXTI_ClearITPendingBit(EXTI_Line0);//清除标志位
	//需要执行的功能
}

void EXTI1_IRQHandler()
{
	EXTI_ClearITPendingBit(EXTI_Line1);//清除标志位
	//需要执行的功能
}
相关推荐
李永奉1 小时前
中科蓝讯SDK开发-BT897X、BT891X、AB573X、AB572X 系列 触摸按键提示音功能实现
网络·单片机·嵌入式硬件·mcu·物联网
Zw-awa1 小时前
定时器到底在数什么:STM32 的时间基准从哪里来
stm32
三佛科技-187366133972 小时前
FT32F405RE02-LB是什么芯片?基于ARM Cortex M4带FPU的MCU芯片解析
stm32·单片机·嵌入式硬件
嵌入式分享3 小时前
嵌入式分#49:浅 8080,RGB,LVDS 与 MIPI 显口
嵌入式硬件·lcd
szarron3 小时前
VNA6 便携式矢量网络分析仪|1MHz‑6.3GHz 手持 VNA 真实应用场景全解析
前端·嵌入式硬件·信息可视化·数据挖掘·数据分析
゛凌乱的记忆づ4 小时前
50元从零到成品:一套AI辅助的嵌入式实战入门教程——ADC采集篇
stm32·单片机·嵌入式硬件
女神下凡4 小时前
芯参谋(31):SPI NOR Flash 电路设计指南
arm开发·单片机·嵌入式硬件·fpga开发·设计规范
csg11075 小时前
上电没反应、运行中死机、现场“抽风”——单片机控制板异常排查六步法
单片机·嵌入式硬件
小程序设计5 小时前
基于单片机的恒温水箱设计
单片机·嵌入式硬件
小程序设计6 小时前
基于单片机的大棚温湿度自动监控系统
单片机·嵌入式硬件