当前位置: 首页 > news >正文

STM32 GPIO

## 一、GPIO简介

### 1、什么是GPIO

GPIO(General-purpos Input/Output)通用输入输出口

作用:

采集外部的器件信息(输入):麦克风、按键

控制外部的器件工作(输出):LED、蜂鸣器

GPIO是所有微控制器必不可少且常用的外设接口。

预研发:需要用万用表对所有GPIO进行测量

### 2、STM32F407ZE的GPIO

1、STM32中144个引脚114 =  16X7+2

GPIO引脚划分为:(A..H),每组GPIO有16个脚位,H组仅有0.1两个脚位

命名:PXY(X代表组号,Y代表端口号)

2、GPIO的工作模式

输入模式:

上拉输入:脚位空闲时,读取数据是高电平

下拉输入:脚位空闲时,读取数据是低电平

模拟输入:用于ADC采集

浮空输入:脚位空闲时,读取的数据不确定

输出模式:

推挽输出:可以输出高电平和低电平

开漏输出:可以输出低电平,但是不能输出高电平,加上拉电路

复用推挽输出:片上外设SPI

复用开漏输出:片上外设IIC

高电平:VDD*0.7 = 3.3Vx0.7=2.3V

低电平:VDD*0.3 = 3.3Vx0.3=0.99V

## 补充:keil5软件的部分问题

1、中文乱码问题

Edit-->Configuration-->Encoding-->Chinese GB2312(Simp..)

2、代码不提示问题

Configuration-->Text Compliton-->Function Parameters

3、内部上拉/下拉和外部上拉/下拉优缺点?

优点:节省PCB空间  缺点:不能更换

优点:随时修改更新参数 缺点:不能省PCB空间

## 二、时钟

1、时钟的概念

原则:处理器内核是要在时钟的驱动下才能完成指令,状态转换,且芯片内部有很多的外设模块,比如说GPIO,UART,这些模块彼此的协同工作,是要时钟来智慧运行。

芯片内部有很多的外设,这些端口在不使用/才上电的时候往往处于关闭状态,这些内部功能启动与关闭,不是借助传统的开关量。而是通过时钟去控制的。如果打开了某个时钟,某个模块才能打开,否则,关闭。

问题:既然功能模块的开启需要时钟,那么由谁来提供?

答案:时钟总线

问题:STM32F407ZE内部总线有什么?

高级高速总线

AHB1(频率168MHz)

AHB2(频率168MHz)

高级外设总线

APB1(频率42MHz)

APB2(频率84MHz)

拓展:

1、标准库函数的命名规律:标准的外设名_函数功能

2、函数传参的规律:形参名_XXX

3、标准的外设初始化结构体规律:标准的外设名称_InitTypeDefine

## 课堂案例:驱动蜂鸣器发声

1、查看原理图                          BEEP--20--PF8                  

2、设置功能脚位                      GPIO输出模式            

3、分析电路获得控制逻辑        高电平发声

4、软件实现

4.1 对应使能GPIO时钟

4.2 设脚位功能

4.3 初始化脚位设置

4.4 根据控制逻辑完成外设控制

## 三、模块化编程

1、以BEEP代码为例,首先在BEEP文件夹内部新建一个文件夹叫HARDWARE

2、打开工程,右键Target 1添加Add group,一个新组并改名HARDWARE,在工程内的名字与第1步新建的名字一样

3、打开魔术棒按钮,选择C/C++,选择include Pahts添加HARDWARE文件形成依赖关系

4、右键点击HARDWARD新建.c和.h,注意:在新建.c和.h时候,一定包含HARDWARE路径

http://www.dtcms.com/a/282706.html

相关文章:

  • 【深度学习】神经网络-part2
  • 架构设计之计算高性能——单体服务器高性能
  • 算法训练营DAY34 第九章 动态规划part02
  • 告别定位盲区!低成本组合导航系统ER-GNSS/MINS-05的实战能力
  • 不安全的 SSL:主机名验证功能被禁用与修复方案
  • WP Force SSL Pro – HTTPS SSL Redirect Boost Your Website‘s Trust in Minutes!
  • 使用token调用Spring OAuth2 Resource Server接口错误 insufficient_scope
  • 服务攻防-Java组件安全数据处理FastJsonJackSonXStream自动BP插件CVE漏洞
  • 多级缓存架构与热点探测系统核心技术解析
  • 2025年C++后端开发高频面试题深度解析:线程安全LRU缓存设计与实现
  • 免费MCP服务:Excel CSV 转 JSON MCP by WTSolutions 文档
  • C++:现代 C++ 编程基石,C++11核心特性解析与实践
  • 软件开发:重塑商贸物流行业格局的核心力量
  • Zabbix监控K8S的PV信息详细教程!
  • AI产品经理面试宝典第25天:AI+机器人产品设计与技术落地面试题与答法
  • Xsens人形机器人拟人动作AI训练,提升机器人工作精度与效率
  • MySQL高并发高可用架构:分库分表实战与ShardingSphere中间件应用
  • JavaScript语言 Error对象及错误处理机制 原生错误类型
  • 芯谷科技--FET偏置控制器,为卫星通信系统提供稳定偏置D8400
  • 大模型智能体(Agent)工程化:AutoGen企业级落地方案全解析
  • exports使用 package.json字段控制如何访问你的 npm 包
  • A13 GMS应用预装
  • 微服务引擎 MSE 及云原生 API 网关 2025 年 5 月产品动态
  • Git 提交信息(Commit Message)的规范校验,husky + commitlint
  • Java全栈工程师面试实录:从电商场景到AIGC的深度技术挑战
  • 手动搭建PHP环境:步步为营,解锁Web开发
  • 【尝试】基于openai-whisper进行语音转文字windows版本
  • 【项目实践】SMBMS(Javaweb版)汇总版
  • flink sql如何对hive string类型的时间戳进行排序
  • python应用day11--requests爬虫详解