当前位置: 首页 > news >正文

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

功能要求

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

代码流程如下:


实现代码

#include "stm32f10x.h"                  // Device headerint main()
{//开启时钟:GPIO、AFIORCC_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);//EXTI0NVIC_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);//EXTI1NVIC_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);//清除标志位//需要执行的功能
}

http://www.lryc.cn/news/403953.html

相关文章:

  • Android SurfaceView 组件介绍,挖洞原理详解
  • day2加餐 Go 接口型函数的使用场景
  • 摄像头 RN6752v1 视频采集卡
  • 记录vivado自带IP iBert眼图近端回环
  • js | Core
  • Log4J reminder
  • Unity XR Interaction Toolkit(VR、AR交互工具包)记录安装到开发的流程,以及遇到的常见问题(一)!
  • MongoDB文档整理
  • 【AI学习】关于Scaling Law的相关学习
  • 学习小记-Kafka相较于其他MQ有啥优势?
  • 技能 | postman接口测试工具安装及使用
  • 移动UI:任务中心的作用,该如何设计更合理?
  • pytorch学习(十)优化函数
  • Ubuntu22.04:安装Samba
  • Powershell 使用介绍
  • 【Langchain大语言模型开发教程】记忆
  • 最新Qt6的下载与成功安装详细介绍
  • LeetCode 热题 HOT 100 (001/100)【宇宙最简单版】
  • Ubantu 使用 docker 配置 + 远程部署 + 远程开发
  • 应用层自定义协议与序列化
  • Python学习笔记—100页Opencv详细讲解教程
  • C语言·分支和循环语句(超详细系列·全面总结)
  • Gateway源码分析:路由Route、断言Predicate、Filter
  • ARM体系结构和接口技术(十)按键中断实验①
  • PostgreSQL使用(二)——插入、更新、删除数据
  • 有关css的题目
  • 【开源库】libodb库编译及使用
  • 电力需求预测挑战赛笔记 Task3 #Datawhale AI 夏令营
  • Promise 详解(原理篇)
  • 动态内存经典笔试题分析