STM32 HAL库GPIO函数实战:从基础配置到中断处理

3,STM32CubeMX配置外部中断EXTI工程 单片机型号:STM32F407编程环境 :STM32CubeMX + Keil v5硬件连接 :PF9 ---> LED0 ,PF10--->LED1注:本工程在基础上完成。 阅读详情

1. GPIO基础配置:从零开始点亮LED

刚开始接触STM32的时候,我最先折腾的就是GPIO控制。GPIO就像是单片机的"手脚",负责与外部世界交互。HAL库的GPIO函数让这个过程变得简单多了,不需要直接操作寄存器,大大降低了入门门槛。

先来看看最核心的初始化函数HAL_GPIO_Init。这个函数需要两个参数:一个是GPIO组(比如GPIOA、GPIOB),另一个是初始化结构体。结构体里面包含了引脚编号、工作模式、上下拉配置和输出速度。我刚开始用的时候经常忘记使能GPIO时钟,结果配置了半天都没反应,后来才发现少了__HAL_RCC_GPIOx_CLK_ENABLE()这一行。

// 完整的GPIO初始化示例
static void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    
    // 必须先使能GPIO时钟
    __HAL_RCC_GPIOB_CLK_ENABLE();
    
    // 配置PB5引脚为推挽输出
    GPIO_InitStruct.Pin = GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}

输出速度的选择很重要。低速(LOW)适合LED指示灯这类不需要快速响应的场景,中速(MEDIUM)适合一般的串口通信,高速(HIGH)则用于SPI、I2C等需要较快响应的外设。如果速度配置不当,可能会导致信号失真或者功耗过高。

2. GPIO输出控制实战技巧

配置好GPIO之后,就可以开始控制输出电平了。HAL_GPIO_WritePin是最常用的输出函数,用起来很简单:指定GPIO组、引脚和要设置的电平状态(SET或RESET)。我经常用这个函数控制LED的亮灭,或者驱动继电器、蜂鸣器之类的器件。

// 控制LED亮灭的典型用法
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);  // 点亮LED
HAL_Delay(500);  // 延时500ms
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET); // 熄灭LED
HAL_Delay(500);

不过在实际项目中,如果频繁调用HAL_

从代码层面分析STM32 标准库和HAL库的差异 相当于每个设置都是独立的函数。HAL库将一段代码通过宏定义的方式封装成了一个函数,每个端口的时钟都单独的定义了一个名称,标准库是一个独立的函数,通过参数传递的方式来设置每个端口的时钟。这两个版本的函数本质上操作的还是寄存器,不过HAL库操作的只是BSRR寄存器,而标准库端口置1的时候操作的是BSRR寄存器,端口清0的时候操作的是BRR寄存器。标准库设置端口模式的时候,是在if语句中判断之后直接设置的,而HAL端口模式设置时,却使用了switch语句去设置,说明在HAL库中,端口模式和标准库中发生了改变。 阅读详情

相关推荐

STM32F1系列HAL库配置GPIO

目录 使用CUBEMX配置GPIO 1.选择MCU 2.配置SYS 3.配置RCC,选择外部引脚 4. 配置引脚 5.GPIO配置 6.时钟源设置 7.管理工程 8.生成工程 GPIO初始化 初始化的一些常用格式 HAL库GPIO函数 一些函数的封装 使用CUBEMX配置GPIO 此文以stm32F108C8T6为例。 1.选择MCU 2.配置SYS 3.配置RCC,选择外部引脚 4. 配置引脚 注: 5.GPIO配置 ...

qq_63069753的博客 3152

使用STM32 HAL库进行GPIO控制的实例

通过使用STM32的HAL库,可以轻松地对GPIO进行配置和控制。本文将演示如何使用STM32 HAL库进行GPIO控制,并提供一个简单的LED控制的实例。合理配置并控制GPIO,可以实现对外部设备(如LED、按钮等)进行有效的控制和交互,为嵌入式系统的开发提供了基础支持。以上代码通过`HAL_GPIO_WritePin`函数实现了对LED引脚的输出电平控制,从而实现LED的闪烁效果。以上代码片段中,首先使能了GPIOC的时钟,然后配置了引脚13(对应PC13)为推挽输出模式,并初始化为低电平。

weixin_66608063的博客 1477

【STM32Cube_05】使用EXIT中断检测按键(NVIC配置+HAL库中断处理机制)

1. 准备工作 硬件准备 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码。 2.生成MDK工程 — 初始化GPIO为输入 选择芯片型号 打开STM32CubeMX,打开MCU选择器: 搜索并选中芯片STM32L431RCT6: 配置时钟源 如果选择使用外部高速时钟(HSE),则...

Mculover666的博客(嵌入式) 9321

AI编程实战:用Spec Coding与Codex半小时重构全栈项目

这次我们来看一个能显著提升全栈开发效率的实战方法:利用 AI 编程工具 Codex 和 Spec Coding 工作流,将原本需要数周甚至一个月的全栈项目重构工期,压缩到半小时级别。这不是概念探讨,而是基于现有工具链的、可立即上手的工程实践。 对于前端开发者或全栈工程师而言,面对老旧项目重构、技术栈升级或从零搭建新项目时,最大的痛点往往是重复性、模式化的代码编写工作。手动编写 CRUD 接口、页面组件、状态管理和联调测试,耗时费力且容易出错。而 AI 辅助编程的核心价值,正是在于将开发者从这些“体力活”中解

weixin_33525298的博客 290

C语言|深入浅出讲解int转换为float全过程(附2017年统考大题案例)

int转换为float类型为什么会发生精度损失? 精度损失的详细过程究竟是什么样的? 什么样情况float会发生精度损失?没有弄懂2017年浮点数统考大题? 这一篇用2017年统考大题案例帮你更深的理解浮点数的存储规则。

DADONGOOO的博客 1万+

基于STM32与毫米波雷达的非接触式睡眠监测系统

物联网和嵌入式系统技术正在推动医疗健康设备的智能化发展。通过传感器网络采集生理信号,结合信号处理算法实现健康监测已成为主流技术方案。毫米波雷达凭借其非接触检测特性,在呼吸、心率等生命体征监测中展现出独特优势。STM32系列MCU凭借丰富外设和低功耗特性,成为医疗级嵌入式设备的首选平台。本系统整合60GHz毫米波雷达、红外测温与无线传输模块,构建了完整的睡眠质量评估解决方案,其硬件架构设计、信号处理算法和低功耗优化策略对可穿戴医疗设备开发具有参考价值。

weixin_36369848的博客 614

UM2 3D 打印机 DIY 实践 (2) 电路篇

涉及到的东西非常多,实际上后面还会讲到。主要部件清单: 主板 mega2560 + Ramps1.4 + LCD12864 各一张 42 x38mm x3,xyz 轴各一台 42 x23mm x1,用在挤出机 泰坦远程挤出机 x1 TMC2225 驱动板 x4, 替代a4988、TMC2208,静音效果好,性价比高 s-250-12v 20A开关电源 x1。功率必须足够大,宁可选大一点的 大功率 MOS 管,25A x1 NTC .

afeiqiang的专栏 3602

IP白名单校验

支持格式: 1、127.0.0.1 // 指定固定IP 2、127.0.0.1-127.0.0.128 // 可使用“-”来表示一个IP区间,支持跨IP段(一般不会出现这种情况,跨IP段则配置多个规则) 3、127.0.* // 2~4位IP段可...

2200

WordPress插件depicter存在SQL注入漏洞(CVE-2025-2011)

Depicter 是一款功能强大的 WordPress 幻灯片插件,允许用户通过直观的拖放编辑器轻松创建响应式滑块、轮播和动态内容展示。该插件提供丰富的模板库、动画效果和图层控制,支持多媒体内容嵌入(如图片、视频、HTML),并优化了移动端显示和SEO性能。其无代码操作界面适合非技术用户,同时提供高级自定义选项,适用于产品展示、营销推广和视觉叙事等多种场景,是提升网站视觉吸引力的高效工具。

m0_50125527的博客 555

有限元之有限元空间的构造

主要介绍有限元的空间构造方法。

欢迎各位大佬光临“寒舍”!请多多指点,共同进步! 762

RT-DERT安卓部署教程

这个文档中的代码案例,实现了拍照和选图识别,两个功能,可以看效果图。UI做了美化:显示类别机和数量。代码下载地址:通过网盘分享的文件:android_rtdert.zip链接: https://pan.baidu.com/s/1k6e-d_lov1OPgUmit5i_cA?pwd=hpfi 提取码: hpfi–来自百度网盘超级会员v8的分享。

AIOT魔法师 196

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 【性能优化】DSP F2837x 中断服务函数执行时间精确测量与优化策略
下一篇: 设备树调试实战:从语法错误到运行时故障的排查指南
linux6sysadmin
博客等级 码龄4年 59粉丝 1615原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值