版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
9个GPIO,140个引脚GPIO
A:PA0GPIO
B:PB0GPIO
C:PC0PA15PB15PC15GPIO
D:PD0
~PD15GPIO
E:PE0GPIO
F:PF0~PE15~
PF15GPIO
G:PG0
~
PG15GPIO
H:PH0
~
PH15GPIO
I
:PI0
~
PI11GPIO最简单的功能是输出高低电平,
GPIO还可以被设置为输入功能,用于读取外部输入信号,比如按键、开关等信号。很多高级外设也有功能引脚,并且是与GPIO共用的,具体引脚功能可以通过软件编程设置对应的寄存器内容实现的。图中最右边的“I/O引脚”就是芯片实物的引脚,
焊接时用到。保护二极
管用于防止因为引脚外
部输入电压过高或过低
烧坏芯片,虽然有保护
作用,但这种保护也是
有限的,大电流大电压
还是很容易烧毁芯片的,这要求实际应用中我们
要注意保护芯片,必要
时设计引脚保护电路。图中上半部分属于引脚
输入功能,通过一个电
阻和一个开关(可以通过寄存器控制开关状态)可以把输入线拉高或者拉
低,这个电阻阻值大概
为4.7K~10K欧。做为普
通的输入引脚,I/O引脚的电平通过触发器后保
存在输入数据寄存器内。图中上半部分属于引脚输入功能,通过一个电阻和一个开关(可以通过寄存器控制开关状态)可以把输入线拉高或者拉低,这个电阻阻值大概为40K欧。做为普通的输入引脚,I/O引脚的电平通过触发器后保存在输入数据寄存器内。图中下半部分是引脚输出功能,通过一个
PMOS管和一个NMOS管组合而成一个反相器驱动输出。对于普通的引脚电平控制,根据需要设置置位或者复位寄存器的值,这两个寄存器的值会改变输出数据寄存器值,通过输出控制电路驱动反相器从而改变引脚的状态。每个GPIO包括10个寄存器来配置GPIO的具体功能(每个引脚功能都是完全可以独立配置,互不影响):GPIOx_MODER:GPIOx_OTYPER
:GPIO
端口模式寄存器GPIO
端口输出类型寄存器GPIOx_OSPEEDR
:GPIO
端口输出速度寄存器GPIOx_PUPDR
:GPIOx_IDR
:GPIOx_ODR
:GPIOx_BSRR
:GPIOx_LCKR
:GPIOx_AFRL
:GPIOx_AFRH
:GPIO
端口上拉/下拉寄存器GPIO
端口输入数据GPIO
端口输出数据寄存器
GPIO
端口置位/复位寄存器
GPIO
端口配置锁定寄存器
GPIO
复用功能低位寄存器
GPIO
复用功能高位寄存器为实现不同工作条件要求,GPIO有8种工作模式:模式配置模式寄存器MODER位[0:1]输出类型寄存器OTYPER位输出速度寄存器OSPEEDER位上/下拉寄存器PUPDR位[0:1]输入浮空00不使用不使用00输入上拉0001输入下拉0010模拟功能1100开漏通用输出01100-速度2MHz01-速度25MHz速度50MHz速度100MHz00-无上下拉01-上拉下拉保留推挽通用输出010复用推挽输出100复用开漏输出1011.
当GPIOx_MODER模式寄存器位[1:0]设置为00,上/下拉寄存器PUPDR[1:0]位设置为00时2.
STM32复位之后默认模式I/O引脚信号接入到施密特触发器的输入端,在每来一个AHB1(168MHz)时钟脉冲就把输入端的信号传输到触发器的输出端,施密特触发器的输出端又是与输入数据寄存器(GPIOx_IDR)连通的,所以该数据就保存在输入数据寄存器内,寄存器本身就是一个存储单元(起到缓冲区效果),所以输入数据寄存器保存着I/O引脚电平。另外,CPU随时都可以读取寄存器数据,从而得知当前引脚状态。1.
在浮空输入模式基础上使能输入电路中的上拉开关2.
上拉开关由上/下拉寄存器PUPDR[0:1]设置为01来使能。1.
在浮空输入模式基础上使能输入电路中的下拉开关2.
下拉开关由上/下拉寄存器PUPDR[0:1]设置为10来使能。1.
当STM32需要进行ADC或DAC转换时,需要把引脚设置为模拟输入模式2.
该模式需要配合ADC或DAC外设使用,否则没有意义。通用输出模式就是做为普通用途的输出模式,比如简单地控制引脚输出高低电平。GPIO的输出是由一个PMOS管和一个NMOS管组合形成的反相器驱动。1.
开漏电路概念中的“漏”是指MOS管的漏极(D),实际只是利用到NMOS管,PMOS管在开漏模式下是没有用到的2.
设置输出高电平时引脚实际是高组态目的:控制I/O引脚开漏输出高电平。STM32实际流程:CPU把端口位设置/清除寄存器(GPIOx_BSRR)引脚对应外设置为1,然后驱动端口输出数据寄存器(GPIOx_ODR)对应位为1,实际上也可以让CPU直接往GPIOx_ODR寄存器引脚对应位写入1。GPIOx_ODR寄存器通过一个选择电路(与复用功能输出做选择)后输入到输出控制电路,经过输出控制电路后在NMOS控制线输出低电平,这时NMOS管截止(PMOS管不被激活),引脚呈高阻状态,不会有电流流动。目的:控制I/O引脚开漏输出低电平。STM32实际流程:CPU把端口位设置/清除寄存器(GPIOx_BSRR)对应引脚位复位置为1,然后驱动输出数据寄存器(GPIOx_ODR)对应位为0,实际上也可以让CPU直接望GPIOx_ODR寄存器引脚对应位写入0。GPIOx_ODR寄存器通过一个选择电路(与复用功能输出做选择)后输入到输出控制电路,经过输出控制电路后在NMOS控制线输出高电平,这时NMOS管导通(PMOS管不被激活),引脚呈低电平状态,允许有电流从引脚流入。另外,整个过程施密特触发输入是被被激活的,出现在I/O脚上的数据在每个AHB1时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。1.
推挽输出把PMOS管和NMOS管都用上2.
设置输出高电平时引脚实际是有电流从引脚流出一个I/O引脚可以做为普通的IO接口,还可以做为其他外设的特殊功能引脚,有些引脚可能有4、5种不同功能,这种现象就叫做复用。引脚复用为特殊功能引脚,那引脚状态就由该外设决定。开漏模式就是在推挽模式下减少P-MOS管的使用。当PH9、PE5和PE6引脚输出高电平时对应的LED灯亮,低电平时LED灯灭。毫无疑问,编程时PH9、PE5和PE6引脚要设置为普通输出模式,不是复用输出模式、更不可能是输入模式,那需要开漏输出、还是推挽输出、还是开漏或推挽都可以呢?显
然,为使得LED灯亮,PH9、PE5和PE6引脚需要输出高电平,并且需要输出电流,显然就需要设置为推挽输出模式,因为如果为开漏模式,回流中不会有电流,没有电流LED灯当
然不会亮了。虽然CubeMX软件确实给我们提供很大的便利,但很多新手都不知道它大概能提供到什么程度。简单一句概括:提供外设初始化配置,不提供应用程序。CubeMX软件就是提供PH9、PE5和PE6三个引脚的初始化配置,我们刚好配置它们输出高电平,所以灯就亮了。至于要让LED灯闪烁就属于用户应用程序了,就需要我们自己实现了。因为CubeMX软件生成的代码注释部分全部是英文,结构也是比较繁琐,考虑到大部分初学者方便,我们会对Keil
V5和IAR工程结构和内容进行对应的改动,使得更容易理解至少注释是中文的。这里我们新建了一个名为“bsp”的组件,专门用来存放YS-F4Pro开发板板载外设的驱动文件,比如图中的bsp_led.c就是开发板上3个LED的驱动实现,并实现了简单的控制函数方便使用。类似bsp_led.c、bsp_led.h、bsp_usart.c、bsp_usart.h等等文件都是我们自己创建的,与STM32CubeMX软件生成的gpio.c、gpio.h、usart.c、usart.h等等文件是存在差别的,我们的驱动文件是以开发板模块功能为基础的,CubeMX软件是以外设分类的,所以我们的驱动文件实际上是在CubeMX软件生成的*.c和*.h文件基础上再次编辑而成的,我们的驱动文件好处就是新工程程序移植非常方便。HAL库为每个外设(GPIO除外)创建了两个结构体,一个是外设初始化结构体,一个是外设句柄结构体,其中GPIO没有句柄结构体。这两个结构体都是定义在外设对应的驱动头文件中,比如
stm32f4xx_hal_usart.h文件。初始化结构一般是做为句柄结构体的一个成员通过指针被引用,而句柄结构体则在外设HAL函数库实现被使用,比如在stm32f4xx_hal_usart.c文件。这两个结构体内容几乎包括了外设的所有可选属性,理解这两个结构体内容对我们编程非常有帮助。
Pin:引脚编号选择,一个GPIO外设有16个引脚可选,这里根据电路原理图选择目标引脚,参数可选:GPIO_PIN_0
、…、GPIO_PIN_15
和GPIO_PIN_ALL
。很多时候我们可以使用或运算选择多个:
GPIO_PIN_0|GPIO_PIN_4。Mode:引脚工作模式选择,前面内容介绍了引脚有八种基本工作模式,选择结合到具体的外设可以有12种模式可选引脚工作模式功能说明GPIO_MODE_INPUT浮空输入模式GPIO_MODE_OUTPUT_PP推挽输出模式GPIO_MODE_OUTPUT_OD开漏输出模式GPIO_MODE_AF_PP推挽复用功能输出模式GPIO_MODE_AF_OD开漏复用功能输出模式GPIO_MODE_ANALOG模拟输入模式GPIO_MODE_IT_RISING外部中断模式:上升沿触发GPIO_MODE_IT_FALLING外部中断模式:下降沿触发GPIO_MODE_IT_RISING_FALLING外部中断模式:上升沿和下降沿都触发GPIO_MODE_EVT_RISING外部事件模式:上升沿触发GPIO_MODE_EVT_FALLING外部事件模式:下降沿触发GPIO_MODE_EVT_RISING_FALLING外部事件模式:上升沿和下降沿都触发Pull:上拉或者下拉选择,用于输入模式,可选:GPIO_NOPULL:不上下来;
GPIO_PULLUP
:使能上拉;
GPIO_PULLDOWN:使能下拉。Speed
:引脚最大输出速度,可选:
GPIO_SPEED_FREQ_LOW:低速(2MHz);中速(10MHz)
;快速(50MHz)
;高速(100MHz)。Alternate:引脚复用功能的选择。具体看“s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年汽车美容保养行业高级技师考核试卷
- 2025-2026年心理健康与压力管理测试卷
- 某机械加工厂设备管理细则
- 机械制造厂技术规范
- 环保设备采购协议
- 科室院感度工作计划(2026版)
- 2026下半年初中数学教资面试逐字稿题库
- 高中美术教资面试教资面试答辩题库
- 具身智能+企业会议室智能服务机器人应用分析研究报告
- T-CTS 35-2026 城市道路交通管理路网空间拓扑数据
- 业主委员会考核物业评分细则
- 2026年重庆市“五方面人员”选拔乡镇领导班子考试历年参考题库(含完整答案)
- 人工拆除工程施工方案方案
- 隧道掌子面素描图文讲解
- 2026新版海姆立克急救法培训
- 2026修订二手车背户买卖协议
- 统编版八年级道德与法治上册知识点清单总结复习清单
- 2025年10月25日全国事业单位联考C类《职业能力倾向测验》真题及答案【含解析】
- 机床翻新施工方案(3篇)
- 江苏疾控中心招聘笔试题库
- 民办非企采购制度
评论
0/150
提交评论