stm32中外部中断控制Led亮灭

说明:外部中断的方式通过按键来实现,stm32的配置为江科大stm32教程中的配置。

1.内容:

通过中断的方式,按下B15按键Led亮,按下B13按键Led灭。

2.硬件设计:

3.代码:

3.1中断底层

EXTI.c

#include "stm32f10x.h"  
#include "Led.h"void inter_Init(void)
{/*开启RCC时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);/*AFIOʱÖÓ*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);/*配置GPIO*/GPIO_InitTypeDef GPIO_InitSturct;GPIO_InitSturct.GPIO_Mode=GPIO_Mode_IPD;GPIO_InitSturct.GPIO_Pin=GPIO_Pin_15|GPIO_Pin_13;GPIO_InitSturct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitSturct);/*配置EXTI*/GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource15);GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource13);EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line15|EXTI_Line13;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_Init(&EXTI_InitStructure);/*配置NVIC*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_Init(&NVIC_InitStructure);
}/*中断服务函数*/
void EXTI15_10_IRQHandler(void)
{if((GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)==1)){LED1_ON();}if((GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==1)){LED1_OFF();}EXTI_ClearITPendingBit(EXTI_Line15|EXTI_Line14);
}

EXTI.h

#ifndef __EXTI_H
#define __EXTI_Hvoid inter_Init(void);#endif

3.2 Led底层

Led.c

#include "stm32f10x.h"                 void LED_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStruct2;GPIO_InitStruct2.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStruct2.GPIO_Pin=GPIO_Pin_1;GPIO_InitStruct2.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStruct2);}void LED1_ON(void)
{GPIO_ResetBits(GPIOA,GPIO_Pin_1);
}void LED1_OFF(void)
{GPIO_SetBits(GPIOA,GPIO_Pin_1);
}

Led.h

#ifndef __LED_H
#define __LED_Hvoid LED_Init(void);
void LED1_ON(void);
void LED1_OFF(void);#endif

3.3 main函数

#include "stm32f10x.h"                  // Device header
#include "EXTI.h"
#include "Led.h"int main(void)
{LED_Init();inter_Init();LED1_OFF();while (1){}
}

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

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

相关文章

1164. 指定日期的产品价格

1164. 指定日期的产品价格 题目链接:1164. 指定日期的产品价格 代码如下: # Write your MySQL query statement below select p1.product_id,ifnull(new_price,10) as price from (select distinct product_idfrom Products )as p1 -- 所有的产品 left…

SpringBoot整合RabbitMQ消息中间件,实现延迟队列和死信队列

在现代的分布式系统中,消息队列作为一种重要的中间件,广泛应用于系统解耦、流量削峰、异步处理等场景。而RabbitMQ作为其中一款流行的消息队列中间件,因其高性能和丰富的功能受到众多开发者的青睐。本文将详细介绍如何在SpringBoot项目中整合…

笔记95:车辆横向动力学方程转化为误差形式 -- 详细推导过程

1. 非误差型车辆横向动力学方程 注:关于轮胎侧偏刚度的正负 深蓝课程推导得到的车辆横向动力学返程使用的轮胎侧偏刚度是默认为正数;老王课程推导得到的车辆横向动力学方程使用的轮胎侧偏刚度是默认为负数; 1.1 深蓝课程推导得到的方程&…

如何计算 GPT 的 Tokens 数量?

基本介绍 随着人工智能大模型技术的迅速发展,一种创新的计费模式正在逐渐普及,即以“令牌”(Token)作为衡量使用成本的单位。那么,究竟什么是Token呢? Token 是一种将自然语言文本转化为计算机可以理解的…

kafka集成flink api编写教程

1.引入依赖&#xff08;pox.xml&#xff09; <dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.13.6</version></dependency><dependency><gro…

【C++ | 拷贝赋值运算符函数】一文了解C++的 拷贝赋值运算符函数

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-06-09 1…

对WEB标准以及W3C的理解与认识

Web标准简单来说可以分为结构&#xff0c;表现&#xff0c;行为&#xff1a; 结构&#xff08;HTML&#xff09;: HTML&#xff08;HyperText Markup Language&#xff09;定义了网页的结构和内容。它通过各种标签来组织信息&#xff0c;如标题、段落、图像、链接等。HTML 提供…

antd DatePicker 日期 与 时间 分开选择

自定义组件 import { DatePicker } from "antd"; import dayjs from "dayjs"; import { FC, useRef } from "react";/*** 日期 与 时间 分开选择** 版本号: * "antd": "^5.17.4",* "dayjs": "^1.11.11"…

树莓派debain 12更换apt-get源到阿里源

1、备份 总共需要备份两个文件 a、/etc/apt/sources.list.d/raspi.list b、/etc/apt/sources.list 2、删除上述两个文件内到所有内容&#xff0c;然后添加如下内容 /etc/apt/sources.list.d/raspi.list deb https://mirrors.aliyun.com/debian/ bookworm main non-free non…

给gRPC增加负载均衡功能

在现代的分布式系统中&#xff0c;负载均衡是确保服务高可用性和性能的关键技术之一。而gRPC作为一种高性能的RPC框架&#xff0c;自然也支持负载均衡功能。本文将探讨如何为gRPC服务增加负载均衡功能&#xff0c;从而提高系统的性能和可扩展性。 什么是负载均衡&#xff1f; …

域名的端口号范围

域名的端口号范围是从0到65535。这些端口可以大致分为两类&#xff1a; 知名端口&#xff08;Well-Known Ports&#xff09;&#xff1a;范围从0到1023。这些端口号一般固定分配给一些服务&#xff0c;如21端口分配给FTP服务&#xff0c;25端口分配给SMTP&#xff08;简单邮件…

新手如何学习编程!

选择编程语言&#xff1a;根据你的兴趣和目标选择一门编程语言。例如&#xff0c;Python 适合初学者和数据科学&#xff0c;JavaScript 适合网页开发&#xff0c;Java 和 C# 适合企业级应用。 理解基本概念&#xff1a;学习编程的基本概念&#xff0c;如变量、数据类型、控制结…

Ansible——stat模块

目录 参数总结 返回值 基础语法 常见的命令行示例 示例1&#xff1a;检查文件是否存在 示例2&#xff1a;获取文件详细信息 示例3&#xff1a;检查目录是否存在 示例4&#xff1a;获取文件的 MD5 校验和 示例5&#xff1a;获取文件的 MIME 类型 高级使用 示例6&…

[leetcode]longest-common-prefix 最长公共前缀

. - 力扣&#xff08;LeetCode&#xff09; 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow","flight"] 输出&…

第52集《摄大乘论》

请大家打开《讲义》第一七二页&#xff0c;戊七、辨修圆满。 前一科我们讲到观照力。这观照力&#xff0c;六波罗蜜多里面的观照力&#xff0c;是观照我空、法空的真如理&#xff0c;使令内心能够得到安住&#xff1b;另外在六波罗蜜多以外&#xff0c;又开出四种波罗蜜多&…

03 Linux 内核数据结构

Linux kernel 有四种重要的数据结构:链表、队列、映射、二叉树。普通驱动开发者只需要掌握链表和队列即可。 链表和队列 Linux 内核都有完整的实现,我们不需要深究其实现原理,只需要会使用 API 接口即可。 1、链表 链表是 Linux 内核中最简单、最普通的数据结构。链表是一…

19082 中位特征值

【2022】贝壳找房秋招测试开发工程师笔试卷2 给你一棵以T为根&#xff0c;有n个节点的树。&#xff08;n为奇数&#xff09;每个点有一个价值V&#xff0c;并且每个点有一个特征值P。 每个点的特征值P为&#xff1a;以这个点为根的子树的所有点&#xff08;包括根&#xff09;…

C#面:应⽤程序池集成模式和经典模式的区别

C# 应用程序池是用于托管和执行应用程序的进程。在 IIS&#xff08;Internet Information Services&#xff09;中&#xff0c;C# 应用程序池有两种集成模式&#xff1a;集成模式和经典模式。 集成模式&#xff08;Integrated Mode&#xff09;&#xff1a; 集成模式是 IIS 7…

深度网络及经典网络简介

深度网络及经典网络简介 导语加深网络一个更深的CNN提高识别精度Data Augmentation 层的加深 经典网络VGGGoogLeNetResNet 高速学习迁移学习GPU分布式学习计算位缩减 强化学习总结参考文献 导语 深度学习简单来说&#xff0c;就是加深了层数的神经网络&#xff0c;前面已经提到…

Java:110-SpringMVC的底层原理(上篇)

SpringMVC的底层原理 在前面我们学习了SpringMVC的使用&#xff08;67章博客开始&#xff09;&#xff0c;现在开始说明他的原理&#xff08;实际上更多的细节只存在67章博客中&#xff0c;这篇博客只是讲一点深度&#xff0c;重复的东西尽量少说明点&#xff09; MVC 体系结…