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

功能要求

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

代码流程如下:


实现代码

#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. 关于基于STM32使用外部中断控制按键

    2024-07-14 08:50:03       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 08:50:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 08:50:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 08:50:03       57 阅读
  4. Python语言-面向对象

    2024-07-14 08:50:03       68 阅读

热门阅读

  1. 跨域问题出现的原因,怎么解决?

    2024-07-14 08:50:03       21 阅读
  2. Isaac sim中使用不同的backone

    2024-07-14 08:50:03       17 阅读
  3. Python中的pytest的使用

    2024-07-14 08:50:03       26 阅读
  4. Power BI 工具介绍

    2024-07-14 08:50:03       24 阅读
  5. 【C语言】多线程服务器

    2024-07-14 08:50:03       22 阅读
  6. 数学建模如何创新

    2024-07-14 08:50:03       27 阅读
  7. 【Qt】使用临时对象的坑

    2024-07-14 08:50:03       21 阅读
  8. C++智能指针的用法

    2024-07-14 08:50:03       23 阅读
  9. vue怎样自定义指令?

    2024-07-14 08:50:03       21 阅读
  10. c++【入门】求平均分

    2024-07-14 08:50:03       21 阅读