ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

STM32 HAL 库外部中断控制流水灯实验报告

STM32 HAL 库外部中断控制流水灯实验报告 一、实验目的掌握 STM32 HAL 库中 GPIO 外设的配置与输出控制方法。理解 STM32 外部中断 EXTI 的工作原理掌握 HAL 库下外部中断的配置与回调函数编写方法。实现通过按键外部中断控制流水灯的暂停与恢复掌握中断事件与主循环任务的配合逻辑。理解中断 “快进快出” 的设计原则掌握标志位法在中断程序中的应用。二、实验环境2.1 硬件环境STM32F103C8T6 最小系统核心板红 / 绿 / 蓝 LED 灯共 3 只轻触按键 1 只1kΩ 限流电阻 3 只、10kΩ 下拉电阻 1 只面包板与杜邦线若干USB-TTL 下载器2.2 软件环境Keil uVision5 集成开发环境STM32CubeMX 代码生成工具STM32F1xx HAL 库驱动包三、实验原理3.1 GPIO 输出驱动 LED 原理STM32 的 GPIO 引脚配置为推挽输出模式时可输出高、低两种电平。引脚输出高电平时LED 导通点亮输出低电平时LED 截止熄灭。本实验使用 PA0、PA5、PB1 三个 GPIO 引脚分别驱动三路 LED。3.2 外部中断 EXTI 工作原理STM32F1 系列共有 19 条外部中断线每个 GPIO 引脚都可映射到对应的 EXTI 中断线支持上升沿、下降沿、双边沿三种触发方式。本实验中 PC14 引脚对应EXTI14 中断线属于 EXTI10~EXTI15 共用的中断通道。按键按下时引脚电平从低变高配置为上升沿触发按键按下时硬件自动触发中断CPU 暂停主循环程序跳转执行中断服务函数。3.3 按键中断控制逻辑定义全局暂停标志位is_paused主循环中根据该标志位判断是否执行流水灯逻辑标志位为 0 时流水灯正常轮流点亮按键按下触发中断在中断回调函数中翻转标志位为 1流水灯停止运行再次按下按键标志位翻转为 0流水灯从当前位置恢复运行。中断中仅做标志位翻转不执行延时等耗时操作符合中断处理 “快进快出” 的设计原则。四、实验内容与步骤4.1 硬件电路连接LED 电路PA0、PA5、PB1 引脚分别串联 1kΩ 限流电阻连接对应 LED 的正极所有 LED 负极统一接 GND。按键电路PC14 引脚连接轻触按键的一端按键另一端接 3.3VPC14 引脚同时外接 10kΩ 下拉电阻至 GND保证未按下时引脚为稳定低电平。4.2 HAL 库工程创建与配置打开 STM32CubeMX选择芯片STM32F103C8T6创建工程。系统配置RCCHSE 配置为外部高速时钟系统时钟倍频至 72MHzSYSDebug 选择 Serial Wire。GPIO 配置PA0、PA5、PB1设置为GPIO_Output输出默认低电平推挽模式无上下拉低速PC14设置为GPIO_EXTI14触发方式为上升沿无上下拉。NVIC 配置开启EXTI line[15:10] interrupts中断通道设置中断优先级。生成 Keil MDK 工程。4.3 功能代码编写在生成的工程中在main.c的用户代码段内编写全局标志位、中断回调函数与流水灯主逻辑。4.4 程序编译与下载Keil 中点击编译检查无错误后生成.hex 文件。通过下载器将程序烧录到 STM32 最小系统板。上电观察实验现象测试按键暂停 / 恢复功能。
返回列表