news 2026/5/8 2:08:16

外部中断按键控制LED灯

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
外部中断按键控制LED灯

1.初始化系统

#include "shake.h" #include "stm32f10x.h" void Shake_Init(void) { GPIO_InitTypeDef GPIOinitstruct; EXTI_InitTypeDef EXTIInitstruct; NVIC_InitTypeDef NVICInitstruct; //AFIO是外部中断的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); //优先级分组配置,2位用来配置强调优先级,2位用来配置子优先级 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //将GPIOA端口的第0个引脚(PA0)连接到外部中断线EXTI0上 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //初始化 GPIO GPIOinitstruct.GPIO_Mode = GPIO_Mode_IPU; GPIOinitstruct.GPIO_Pin = GPIO_Pin_0; GPIO_Init(GPIOA,&GPIOinitstruct); //初始化EXIT外部中断条件 EXTIInitstruct.EXTI_Line = EXTI_Line0; EXTIInitstruct.EXTI_Mode = EXTI_Mode_Interrupt; EXTIInitstruct.EXTI_Trigger = EXTI_Trigger_Falling;//由于是按键按下,所以说下降沿触发 EXTIInitstruct.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTIInitstruct); //初始化NVIC嵌套中断控制器及分组 NVICInitstruct.NVIC_IRQChannel = EXTI0_IRQn; NVICInitstruct.NVIC_IRQChannelPreemptionPriority = 0; NVICInitstruct.NVIC_IRQChannelSubPriority= 0; NVICInitstruct.NVIC_IRQChannelCmd= ENABLE; NVIC_Init(&NVICInitstruct); }

初始化LED灯

#include "stm32f10x.h" #include "led.h" void LED_Init() { GPIO_InitTypeDef led_initstruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); led_initstruct.GPIO_Pin=GPIO_Pin_1; led_initstruct.GPIO_Speed=GPIO_Speed_2MHz; led_initstruct.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOA,&led_initstruct); }

2.外部中断函数

weak:弱定义,如果用户没有自己定义中断函数,则系统默认执行系统自定义的中断函数,如果用户有定义中断函数,则优先执行用户的中断函数

#include "stm32f10x.h" #include "main.h" #include "led.h" #include "shake.h" void delay(uint16_t time) { uint16_t i=0; while(time --) { i=12000; while(i --); } } int main() { LED_Init(); Shake_Init(); GPIO_SetBits(GPIOA,GPIO_Pin_1); while(1) { } } //判断中断发生控制LED灯 void EXTI0_IRQHandler() { if(EXTI_GetITStatus(EXTI_Line0) != RESET) { GPIO_ResetBits(GPIOA,GPIO_Pin_1); delay(1000); GPIO_SetBits(GPIOA,GPIO_Pin_1); delay(1000); //清除EXTI0线的中断挂起标志位,如果不清除标志位,后续的外部中断无法再次触发 EXTI_ClearITPendingBit(EXTI_Line0); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 20:20:02

TLS网络安全协议巩固知识基础题(4)

1. 什么是TLS协议? 参考答案: TLS(Transport Layer Security)传输层安全协议是一种加密通信协议,用于在网络通信中提供安全性和数据完整性保护。它是SSL协议的继任者,目前广泛应用于HTTPS、FTP、SMTP等网络协议的安全传输。 2. TLS与SSL有什么区别? 参考答案: 版本演…

作者头像 李华
网站建设 2026/5/8 2:07:28

基于GoFrame与微内核架构的企业级物联网平台设计与实现

基于GoFrame与微内核架构的企业级物联网平台设计与实现 SagooIOT企业级物联网平台:毕业设计的理想选择与实用指南 在当今数字化时代,物联网技术正以前所未有的速度改变着我们的生活和工作方式。从智能家居到工业自动化,从智慧城市到农业监测…

作者头像 李华
网站建设 2026/5/7 23:52:43

GetQzonehistory终极指南:三步完成QQ空间数据完整备份

在数字记忆时代,QQ空间承载着我们太多的青春印记和珍贵回忆。那些年写过的说说、上传的照片、收到的留言,都是不可替代的数字资料。GetQzonehistory作为一款专业的QQ空间历史数据抓取工具,能够帮助用户轻松备份所有公开的说说内容&#xff0c…

作者头像 李华
网站建设 2026/5/7 10:23:55

哔哩下载姬DownKyi完整教程:从入门到精通的8大核心技巧

在内容爆炸的时代,B站已经成为学习、娱乐的重要平台。哔哩下载姬DownKyi作为专业的B站视频下载工具,让你能够高效保存和管理心仪的内容。本教程将带你从基础操作到高级技巧,全面掌握这款强大工具的使用方法。 【免费下载链接】downkyi 哔哩下…

作者头像 李华
网站建设 2026/5/7 23:31:15

Grafana MCP集成终极指南:5个快速提升监控效率的技巧

Grafana MCP集成终极指南:5个快速提升监控效率的技巧 【免费下载链接】mcp-grafana MCP server for Grafana 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-grafana 在当今数据驱动的时代,有效的监控系统已经成为企业运维的必备工具。Grafana…

作者头像 李华
网站建设 2026/5/4 23:14:01

与节点-–-behaviac

原文 与(And)节点接受两个以上的条件子节点,执行逻辑”与(&&)”操作,如下图所示: 图1 与节点 只要有一个条件子节点的返回值为失败,与节点则返回失败。所有条件子节点都返…

作者头像 李华