2023版 STM32实战3 按键外部中断(电路与代码都讲解)

常规电路(带上拉电阻)

阻值可选3.3/4.7/5.1/10 单位K
在这里插入图片描述

偷懒电路

利用GPIO内部的上拉模式
在这里插入图片描述

代码(直接拷贝使用)

这是一个外部中断控制变量a增加减少的demo
为了新手方便我直接都写在了main.c文件

#include "stm32f10x.h"u8 keyflag=0;
u8 a=0;void KEY_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);	GPIO_InitTypeDef GPIO_in;GPIO_in.GPIO_Mode=GPIO_Mode_IPU;GPIO_in.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4;GPIO_Init(GPIOE,&GPIO_in);}void My_EXIT_Init(void)
{GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);EXTI_InitTypeDef EXTI_in;EXTI_in.EXTI_Line=EXTI_Line3|EXTI_Line4;EXTI_in.EXTI_LineCmd=ENABLE;EXTI_in.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_in.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_Init(&EXTI_in);}void KEY_NVIC_CFG(void)
{NVIC_InitTypeDef nvic_in;nvic_in.NVIC_IRQChannel=EXTI3_IRQn;nvic_in.NVIC_IRQChannelCmd=ENABLE;nvic_in.NVIC_IRQChannelPreemptionPriority=0;nvic_in.NVIC_IRQChannelSubPriority=0;NVIC_Init(&nvic_in);nvic_in.NVIC_IRQChannel=EXTI4_IRQn;nvic_in.NVIC_IRQChannelCmd=ENABLE;nvic_in.NVIC_IRQChannelPreemptionPriority=0;nvic_in.NVIC_IRQChannelSubPriority=1;NVIC_Init(&nvic_in);
}//中断函数3
void EXTI3_IRQHandler(void)
{EXTI_ClearFlag(EXTI_Line3);keyflag=1;}//中断函数4
void EXTI4_IRQHandler(void)
{EXTI_ClearFlag(EXTI_Line4);keyflag=2;
}int main(void){	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);KEY_Init();My_EXIT_Init();KEY_NVIC_CFG();while(1){if(keyflag==1){keyflag=0;a++;}else	if(keyflag==2){keyflag=0;a--;}}}

工程获取

三连后点击下方头像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/115494.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鼠标拖拽拖动盒子时,与盒子内某些点击事件冲突问题解决

目录 问题解决思路解决代码(标注【主要代码】的为重点) 问题 拖动该悬浮球时,鼠标弹起可能会触发悬浮球内事件 解决思路 鼠标拖动盒子时,将 isMove 设为 true 意为正在拖动盒子,此时将 class"btns_move" 遮…

采用cv2和默认的人脸识别分类器实现人脸检测功能

人脸识别分类器 haarcascade_frontalface_default 提示:分类器文件地址在这里:https://github.com/opencv/opencv/blob/687fc11626901cff09d2b3b5f331fd59190ad4c7/data/haarcascades/haarcascade_frontalface_default.xml 文章目录 人脸识别分类器 haar…

终于把量化入门了,实盘权限已开,学习这件事也不难

多数人18岁就死了,但直到75岁才埋。 ——网易云热评《杀死那个石家庄人》 猫猫挺喜欢这句话的,为什么只活动75岁,于是我查了查现如今78.6岁,大差不差的。 那扣扣减减,人生短短57年,唯一十八岁那年&#xff…

C# 查找迷宫路径

1.导入图像&#xff0c;并且将图像转灰度 using var img new Image<Bgr, byte>(_path); using var grayImg img.Convert<Gray, byte>(); 2.自动二值化图像 using var inputGrayOut new Image<Gray, byte>(grayImg.Size); // 计算OTSU阈值 var threshol…

[正确重装docker] Win10 重装 Docker 提示 Exising installation is up to date 的正确姿势

Win10 重装 Docker 报错 Exising installation is up to date 的一种情况是原来的 docker 没有卸载干净&#xff0c;或者说&#xff0c;没有正确卸载。 巧了&#xff0c;我就是直接删除了&#xff0c;因为一些原因重装了好几次&#xff0c;血泪史留给各位嘲笑。 一条正确的卸…

怎么将几张图片做成pdf合在一起

怎么将几张图片做成pdf合在一起&#xff1f;在我们平时的工作中&#xff0c;图片和pdf都是非常重要的电脑文件&#xff0c;使用也非常频繁&#xff0c;图片能够更为直观的展示内容&#xff0c;而pdf则更加的正规&#xff0c;很多重要文件大多会做成pdf格式的。在职场人的日常工…

力扣刷题-数组-螺旋矩阵

模拟过程&#xff0c;但却十分考察对代码的掌控能力。 重点&#xff1a;循环不变量原则&#xff01; 第一条原则&#xff1a; 模拟顺时针画矩阵的过程&#xff1a; 填充上行从左到右填充右列从上到下填充下行从右到左填充左列从下到上 由外向内一圈一圈这么画下去。 第二条原…

如何在没有第三方.NET库源码的情况,调试第三库代码?

大家好&#xff0c;我是沙漠尽头的狼。 本方首发于Dotnet9&#xff0c;介绍使用dnSpy调试第三方.NET库源码&#xff0c;行文目录&#xff1a; 安装dnSpy编写示例程序调试示例程序调试.NET库原生方法总结 1. 安装dnSpy dnSpy是一款功能强大的.NET程序反编译工具&#xff0c;…

ESP8266 WiFi物联网智能插座—电能计量

目录 1、芯片功能 2、性能指标 3、寄存器说明 4、UART通信协议 4.1、写操作帧格式和时序 4.2、读操作帧格式和时序 4.3、读取全电参数数据包 4.4、配置波特率 4.5、UART保护机制 5、功能说明 5.1、电流电压瞬态波形计量 5.2、有功功率 5.3、有功功率防潜动 5.4、电能计量 5.5、…

摩尔信使MThings实用功能盘点

“冗长的用户手册”与“精简的交互设计”之间势必产生一条信息鸿沟&#xff0c;现在就来盘点一下摩尔信使MThings有哪些隐蔽而实用的功能。 01 数据配置类 一键刷新 功能&#xff1a;快速读取所有位数据、寄存器数据的当前数值。 操作&#xff1a;双击“数值”列表头。 一键…

基于微信小程序的公司后勤服务(设备)系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明员工微信端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文参考源码获取 前言 &#x1f497;博主介绍&#x…

【C++】搜索二叉树底层实现

目录 一&#xff0c;概念 二&#xff0c;实现分析 1. 插入 &#xff08;1.&#xff09;非递归版本 &#xff08;2.&#xff09;递归版本 2. 打印搜索二叉树 3.查找函数 &#xff08;1.&#xff09;非递归版本 &#xff08;2.&#xff09;递归版本 4. 删除函数&#x…