采用STM32外部中断模式控制LED灯亮灭

本文介绍如何利用STM32CubeMX配置项目,结合KEIl编程,通过外部中断模式控制LED灯的亮灭。实验过程包括配置GPIO、EXTI及中断回调函数,并在STM32F103C8T上实现。实验总结强调了外部中断模式的运用和STM32CubeMX的熟悉度提升。
摘要由CSDN通过智能技术生成

实验工具

软件:
STM32CubeMX:6.30
KEIl:5.31
mcuisp
硬件:
STM32F103C8T

一、STMCube配置项目

1.配置引脚

A4输出控制灯的亮灭,设置为GPIO_Output
A1持续输出高电平,设置同上
A7持续输出低电平,设置同上
B5模拟开关,设置为GPIO_EXTI5

在这里插入图片描述

2.配置EXIT

在这里插入图片描述

3.配置SYS

在这里插入图片描述

4.配置GPIO

A1配置为高电平、A7配置为低电平
B5中断配置为上升沿和下降沿都触发
注:User Label可以为当前引脚设置一个别名,方便后续自己调用

STM32外部中断控制LED灯通常涉及GPIO配置、中断服务函数(ISR)以及中断请求管理。以下是一个基本步骤的概述: 1. **配置GPIO**: - 首先,你需要将GPIO功能设置为推挽输出模式,并将其配置为输入以便检测外部信号(如按钮)的变化。 ```c GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = LED_PIN; // LED对应的引脚 GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUTPUT_PP; // 输出推挽 GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStructure); ``` 2. **设置中断**: - 在EXTI(外部中断)模块上启用相应的中断线,比如EXTI Line0对应按键。 ```c EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_LINE0; EXTI_InitStructure.EXTI_Mode = EXTI_MODE_IT_FALLING; // 按键按下触发下降沿 EXTI_InitStructure.EXTI_Trigger = EXTI_TRIGGER_RISING; // 引脚上升沿触发中断 EXTI_InitStructure.EXTI_LineCmd = ENABLE; HAL_EXTI_Init(&EXTI_InitStructure); ``` 3. **配置中断服务函数**: - 创建一个ISR(Interrupt Service Routine),当外部中断发生时会被调用。 ```c void EXTI0_IRQHandler(void) { if (HAL_GPIO_ReadPin(GPIOA, LED_PIN) == GPIO_PIN_RESET) { // LED HAL_GPIO_WritePin(GPIOA, LED_PIN, GPIO_PIN_SET); } else { // LED点亮 HAL_GPIO_WritePin(GPIOA, LED_PIN, GPIO_PIN_RESET); } } ``` 4. **注册并开启中断**: - 将中断服务函数注册到系统的中断管理器,然后开启中断。 ```c HAL_NVIC_SetPriorityEXTI0 Falling, 0, 0); // 设置中断优先级 HAL_NVIC_EnableIRQ(EXTI0_IRQn); ``` 5. **处理其他情况**: - 考虑清除中断标志以防止多个事件堆积在同一时刻。 ```c EXTI_ClearITPendingBit(EXTI_Line0); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值