news 2026/4/4 11:53: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/4/3 6:17:26

人类记忆 vs 大模型记忆,到底差在哪?

这是一篇发表于 2025 年 10 月《Trends in Cognitive Sciences》上的文章。文章的核心在于探讨如何利用认知神经科学(Cognitive Neuroscience)中关于人类“情景记忆”(Episodic Memory, EM)的研究成果,来改进现有的记忆…

作者头像 李华
网站建设 2026/4/3 7:14:39

百度网盘免费解析工具终极指南:彻底告别限速烦恼

百度网盘免费解析工具终极指南:彻底告别限速烦恼 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘那令人抓狂的几十KB下载速度而苦恼吗?重…

作者头像 李华
网站建设 2026/4/4 0:56:41

JumpCloud 远程助手漏洞可导致系统遭接管

聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士JumpCloud Windows版远程助手存在漏洞CVE-2025-34352(CVSS评分8.5),攻击者可借此提权并可能控制终端。该漏洞的成因在于,应用程序在执行卸载和…

作者头像 李华
网站建设 2026/4/3 10:10:26

显卡驱动彻底清理终极指南:DDU工具深度解析与应用技巧

显卡驱动彻底清理终极指南:DDU工具深度解析与应用技巧 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller …

作者头像 李华