STM32 GPIO 学习笔记
GPIO 基础与配置方法一、GPIO单片机与外界交互最基础的外设输出控制引脚输出高低电平驱动 LED、蜂鸣器等输入读取引脚电平用于按键等外部信号。STM32F103C8T6 的 GPIO 按端口分组每组 16 个引脚二、GPIO 的 8 种工作模式引脚内部通过寄存器配置决定工作模式模式方向说明典型用途浮空输入输入电平由外部决定容易悬空极少使用上拉输入输入内部上拉空闲默认高按键按下接地下拉输入输入内部下拉空闲默认低按键按下接高模拟输入输入不经过施密特触发器ADC 采样开漏输出输出只能拉低需外部上拉I2C、多机共线推挽输出输出能拉高也能拉低驱动强驱动 LED、蜂鸣器复用开漏输出复用由外设控制开漏外设功能复用推挽输出复用由外设控制推挽外设功能如 PWM输出点灯用推挽输出GPIO_Mode_Out_PP读按键用上拉输入GPIO_Mode_IPU。三、GPIO 常用寄存器标准库把寄存器封装成GPIOA-CRL形式代码里无需直接操作寄存器作用CRL配置低 8 位引脚PIN0~7模式CRH配置高 8 位引脚PIN8~15模式IDR输入数据寄存器读ODR输出数据寄存器写BSRR位设置/清除寄存器四、GPIO 配置1. 使能时钟GPIO 挂在 APB2RCC_APB2PeriphClockCmd2. 填充 GPIO_InitTypeDef 结构体调用 GPIO_Init 写入寄存器3. 输入→读取输出→控制使能时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);配置结构体并初始化GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; // 推挽输出 GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; // 引脚 PA0 GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 输出速度 GPIO_Init(GPIOA, GPIO_InitStructure);输入模式不需要GPIO_Speed模式改为GPIO_Mode_IPU/GPIO_Mode_IPD。操作引脚操作函数输出高电平GPIO_SetBits(GPIOA, GPIO_Pin_0)输出低电平GPIO_ResetBits(GPIOA, GPIO_Pin_0)按值写单引脚GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET/Bit_RESET)整端口写GPIO_Write(GPIOA, 0x0001)读取单引脚GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)读取输出寄存器GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0)五、编程常用技巧1. 延时函数软件延时void Delay(uint32_t i) { while (i--); } // 空转延时大小需按主频校准2. 按键软件消抖机械按键按下瞬间会抖动5~20ms需消抖检测到变化后延时跳过抖动二次确认。3. LED 翻转GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0)));4. 流水灯位运算GPIO_Write(GPIOA, 0x0001 i); // 1 左移 i 位点亮第 i 个 LED六、光敏传感器控制蜂鸣器1. 光敏传感器光敏电阻光照强 → 输出低电平光照弱遮挡→ 输出高电平STM32 用 GPIO输入模式读取该电平。2. 与按键的对比输入源电平来源空闲状态读取函数按键手动按下上拉高GPIO_ReadInputDataBit光敏传感器光照变化取决于光照GPIO_ReadInputDataBit思路一致配置为输入模式 → 读取电平 → 根据电平执行动作。区别只在信号源不同。3. 两个功能按键控制 LED按键按下翻转 LED光敏控制蜂鸣器光线变暗时蜂鸣器响起4. 光敏模块接线光敏模块输出引脚 ── GPIO 输入引脚如 PA1 光敏模块 VCC ── 3.3V 光敏模块 GND ── GND七、常见易错点忘记使能时钟→ 写入无效引脚无反应选错总线GPIO 必须用RCC_APB2PeriphClockCmd端口与引脚不一致GPIO_Init(GPIOA,...)要和GPIO_Pin_0对应引脚选错按开发板原理图确认实际引脚模式选错输出用 Push-Pull输入用 IPU/IPD二者不能混用按键不消抖→ 一次按压多次触发高/低电平逻辑错误看清电路低电平点亮时ResetBits才亮

相关新闻

只抓业绩不做战略,企业早晚陷入增长瓶颈

只抓业绩不做战略,企业早晚陷入增长瓶颈

很多企业都有一个共性误区:把业绩当成经营的全部。团队全员紧盯月度回款、季度指标、年度排名,所有人都在埋头赶路,却极少有人抬头看路。短期数据看着节节攀升,团队干劲十足,看似一片向好,可不知不觉间&…

2026/9/15 16:18:43 阅读更多 →
口碑好的半导体防尘室密集架厂家推荐哪家美誉度高

口碑好的半导体防尘室密集架厂家推荐哪家美誉度高

半导体防尘室密集架行业新动态与市场挑战近年来,半导体行业的快速发展对防尘室密集架提出了更为严格的标准。如GB/T XXXX - XXXX(模拟标准代号)明确规定了半导体防尘室密集架在防尘、防静电、稳定性等方面的技术指标。当前市场面临诸多挑战&a…

2026/10/8 7:19:20 阅读更多 →
终极iOS解锁方案:applera1n轻松绕过iCloud激活锁的完整指南

终极iOS解锁方案:applera1n轻松绕过iCloud激活锁的完整指南

终极iOS解锁方案:applera1n轻松绕过iCloud激活锁的完整指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否曾经因为忘记Apple ID密码而无法使用自己的iPhone?或者购买的…

2026/9/24 18:33:00 阅读更多 →

最新新闻

多Agent技能管理实战:用GNU Stow和chezmoi建立唯一事实源

多Agent技能管理实战:用GNU Stow和chezmoi建立唯一事实源

1. 事故现场:同一个 skill,怎么可能存了三份上半年我在团队里搭了一套多 agent 的日常工具链,角色也不复杂:一个负责代码评审,一个负责日志排查,一个负责数据查询。最开始为了赶进度,每个 agent…

2026/10/12 12:29:44 阅读更多 →
MyEclipse 2021安装配置与避坑指南:JDK、Tomcat及编码排错

MyEclipse 2021安装配置与避坑指南:JDK、Tomcat及编码排错

简介:MyEclipse 2021.5.24a 是面向 Java 开发者的一体化 IDE 资源包,覆盖 Java SE/EE/ME 桌面应用与 Web 开发场景,也适合使用 Spring、Struts、Hibernate、Tomcat、GlassFish 以及 MySQL 等数据库连接的企业级项目,初学者搭建环境…

2026/10/12 12:29:44 阅读更多 →
HTTP与RPC接口测试实战:从协议差异到用例设计与线上排错

HTTP与RPC接口测试实战:从协议差异到用例设计与线上排错

做接口测试这几年,我把 Postman、Jmeter、Apifox、grpcurl 这些工具换了一轮,最后发现工具只是表面,真正决定测试质量的是你对 HTTP 和 RPC 这两套协议的理解深度。很多人觉得接口测试就是发个请求、看个状态码,真到线上出问题的时…

2026/10/12 12:29:44 阅读更多 →
Windows Server 2012多用户远程桌面配置:会话原理与故障排查

Windows Server 2012多用户远程桌面配置:会话原理与故障排查

简介:Windows Server 2012 默认每个用户最多只允许两个远程会话,多人同时登录常需通过组策略手动调整默认限制。配置文档面向系统管理员与 IT 运维人员,专门解决多用户远程桌面接入的问题,覆盖从启用远程桌面到设置最大连接数的关…

2026/10/12 12:29:44 阅读更多 →
二阶常系数线性微分方程:特征方程与待定系数法全解析

二阶常系数线性微分方程:特征方程与待定系数法全解析

二阶常系数线性微分方程,这六个字只要出现在高等数学教材目录里,多半伴随着“特征方程”“待定系数”这些让初学者发怵的概念。但说实话,这门课在实际问题里的地位比很多人想的重要得多——弹簧怎么振动、电路怎么衰减、控制系统的响应曲线长…

2026/10/12 12:29:44 阅读更多 →
open-code-review:结构化代码评审工具的设计与落地实践

open-code-review:结构化代码评审工具的设计与落地实践

1. 从"代码评审"这四个字说起:为什么值得单独造一个工具代码评审这件事,几乎每个写过团队项目的人都经历过。但绝大多数人对它的印象并不好——要么是走个形式点个"同意",要么是评审意见散落在聊天记录里找不回来&#x…

2026/10/12 12:28:43 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →