news 2026/6/24 0:51:44

外部中断按键控制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/6/23 19:51:34

5分钟掌握LOL游戏形象定制:LeaguePrank合规美化工具使用指南

5分钟掌握LOL游戏形象定制:LeaguePrank合规美化工具使用指南 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 在英雄联盟的游戏体验中,你是否曾希望展现更独特的个人形象?LeaguePrank正是为此…

作者头像 李华
网站建设 2026/6/22 20:39:48

ConnectivityFilter数据集中分离的区域或连通分量

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①vtkDelaunay3D模型生成,②模型…

作者头像 李华
网站建设 2026/6/23 10:12:34

终极免费抽奖神器:Magpie-LuckyDraw全平台部署指南

Magpie-LuckyDraw作为一款功能强大的年会抽奖系统,凭借其炫酷的3D动画效果和跨平台部署能力,成为各类活动现场的首选抽奖工具。这款开源抽奖软件支持Windows、Mac、Linux、Web和Docker全平台运行,让抽奖环节既公平又充满视觉冲击力。 【免费下…

作者头像 李华
网站建设 2026/6/23 19:55:02

技术人才职业发展:从工具思维到价值创造的成长阶梯

技术人才职业发展:从工具思维到价值创造的成长阶梯 【免费下载链接】engineering-management A collection of inspiring resources related to engineering management and tech leadership 项目地址: https://gitcode.com/GitHub_Trending/en/engineering-manag…

作者头像 李华
网站建设 2026/6/23 21:46:30

百度贴吧用户脚本终极指南:告别繁琐操作,体验贴吧新境界

百度贴吧用户脚本终极指南:告别繁琐操作,体验贴吧新境界 【免费下载链接】baidu-tieba-userscript 需要:支持扩展的浏览器,例如谷歌,yandex,火狐等;扩展:Tampermonkey脚本管理器; …

作者头像 李华