版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、9个GPIO,140个引脚GPIO最简单的功能是输出高低电平, GPIO还可以被设置为输入功能,用GPIO A:PA0 GPIO B:PB0 GPIO C:PC0 PA15 PB15 PC15于外部输入信号,比如按键、开关等信号。很多高级外设也有功能引脚,并且是与GPIO共用的,具GPIO D:PD0 PD15GPIO E:PE0 GPIO F:PF0体引脚功能可以通过编程设置 PE15 PF15对应的寄存器内容实现的。GPIO G:PG0 PG15 GPIO H:PH0 PH15GPIO I :PI0 PI11图中最右边的“I/O引脚”就是实物的引脚,焊接时用到。保护二极管用于防止因为引脚外
2、部输入电压过高或过低烧坏,虽然有保护作用,但这种保护也是有限的,大电流大电压还是很容易烧毁的,这要求实际应用中我们要注意保护,必要时设计引脚保护电路。图中上半部分属于引脚输入功能,通过一个电阻和一个开关(可以通过寄存器开关状态)可以把输入线或者拉低,这个电阻阻值大概为4.7K10K欧。做为普通的输入引脚,I/O引脚的电平通过触发器后保输入数据寄存器内。图中上半部分属于引脚输入功能,通过一个电阻和一个开关(可以通过寄存器开关状态)可以把输入线或者拉低,这个电阻阻值大概为40K欧。做为普通的输入引脚,I/O引脚的电平通过触发器后保输入数据寄存器内。图中下半部分是引脚输出功能,通过一个PMOS管和一
3、个NMOS管组合而成一个反相器驱动输出。对于普通的引脚电平,根据需要设置置位或者复位寄存器的值,这两个寄存器的值会改变输出数据寄存器值,通过输出电路驱动反相器从而改变引脚的状态。每个GPIO10个寄存器来配置GPIO的具体功能(每个引脚功能都是完全可以GPIOx_MODER:GPIOx_OTYPER :配置,互不影响):GPIO 端口模式寄存器GPIO 端口输出类型寄存器GPIOx_OSPEEDR : GPIO 端口输出速度寄存器GPIOx_PUPDR :GPIOx_IDR : GPIOx_ODR : GPIOx_BSRR : GPIOx_LCKR : GPIOx_AFRL : GPIOx_A
4、FRH :GPIO 端口上拉/下拉寄存器GPIO 端口输入数据GPIO 端口输出数据寄存器GPIO 端口置位/复位寄存器GPIO 端口配置锁定寄存器GPIO 复用功能低位寄存器GPIO 复用功能高位寄存器为实现不同工作条件要求,GPIO有8种工作模式:模式配置模式寄存器MODER位0:1输出类型寄存器OTYPER位输出速度寄存器OSPEEDER位上/下拉寄存器PUPDR位0:1输入00不使用不使用00输入上拉0001输入下拉0010模拟功能1100开漏通用输出01100- 速度2MHz01- 速度25MHz10- 速度50MHz11- 速度100MHz00- 无上下拉01- 上拉10- 下拉1
5、1- 保留推挽通用输出010复用推挽输出100复用开漏输出1011. 当GPIOx_MODER模式寄存器位1:0设置为00,上/下拉寄存器PUPDR1:0 位设置为00时2. STM32复位之后默认模式I/O引脚信号接入到触发器的输入端,在每来一个AHB1(168MHz)时钟脉冲就把输入端的信号传输到触发器的输出端,触发器的输出端又是与输入数据寄存器(GPIOx_IDR)连通的,所以该数据就保输入数据寄存器内,寄存器本身就是一个单元(起到缓冲区效果),所以输入数据寄存器保存着I/O引脚电平。另外,CPU随时都可以从而得知当前引脚状态。寄存器数据,1.在输入模式基础上使能输入电路中的上拉开关2.
6、上拉开关由上/下拉寄存器PUPDR0:1设置为01来使能。1.在输入模式基础上使能输入电路中的下拉开关2.下拉开关由上/下拉寄存器PUPDR0:1设置为10来使能。1. 当STM32需要进行ADC或DAC转换时,需要把引脚设置为模拟输入模式2. 该模式需要配合ADC或DAC外设使用,否则没有意义。通用输出模式就是做为普通用途的输出模式,比如简单地引脚输出高低电平。GPIO的输出是由一个PMOS管和一个NMOS管组合形成的反相器驱动。1.开漏电路概念中的“漏”是指MOS管的漏极(D),实际只是利用到NMOS 管,PMOS管在开漏模式下是没有用到的2.设置输出高电引脚实际是高组态目的:I/O引脚开
7、漏输出高电平。STM32实际流程:CPU把端口位设置/清除寄存1.器(GPIOx_BSRR)引脚对应外设置为1,然后驱动端口输出数据寄存器(GPIOx_ODR)对应位为1,实际上也可以让CPU直接往GPIOx_ODR寄存器引脚对应位写入1。GPIOx_ODR寄存器通过一个选择电路(与复用功能输出做选择)后输入到输出电路,经过输出电路后在NMOS线输出低电平,这时NMOS管截止(PMOS管不被激活),引脚呈高阻状态,有电流。目的:I/O引脚开漏输出低电平。STM32实际流程:CPU把端口位设置/清除寄存2.器(GPIOx_BSRR) 对应引脚位复位置为1,然后驱动输出数据寄存器(GPIOx_OD
8、R)对应位为0,实际上也可以让CPU直接望GPIOx_ODR寄存器引脚对应位写入0。GPIOx_ODR寄存器通过一个选择电路(与复用功能输出做选择)后输入到输出电路,经过输出控制电路后在NMOS 低电平状态,另外,整个过程线输出高电平,这时NMOS管导通(PMOS管不被激活),引脚呈有电流从引脚流入。触发输入是被被激活的,出现在I/O脚上的数据在每个AHB1时3.钟被采样到输入数据寄存器,对输入数据寄存器的读可得到I/O状态。1.推挽输出把PMOS管和NMOS管都用上2.设置输出高电引脚实际是有电流从引脚流出一个I/O引脚可以做为普通的IO接口,还可以做为其他外设的特殊功能引 脚,有些引脚可能
9、有4、5种不同功能,这种现象就叫做复用。引脚复用为特殊功能引脚,那引脚状态就由该外设决定。开漏模式就是在推挽模式下减少P-MOS管的使用。当PH9、PE5和PE6引脚输出高电对应的LED灯亮,低电LED灯灭。,编程时PH9、PE5和PE6引脚要设置为普通输出模式,不是复用输出模式、更不可能是输入模式,那需要开漏输出、还是推挽输出、还是开漏或推挽都可以呢?显然,为使得LED灯亮, PH9、PE5和PE6引脚需要输出高电平,并且需要输出电流,显然就需要设置为推挽输出模式,因为如果为开漏模式,回流中有电流,没有电流LED灯当然亮了。虽然CubeMX确实给我们提供很大的便利,但很多新手都不知道它大概能
10、提供到什么程度。简单一句概括:提供外设初始化配置,不提供应用程序。就是提供PH9、PE5和PE6三个引脚的初始化配置,我们刚好配置它们输出CubeMX高电平,所以灯就亮了。至于要让LED灯闪烁就属于用户应用程序了,就需要我们现了。实因为CubeMX生成的代码注释部分全部是英文,结构也是比较繁琐,考虑到大部分初学者方便,我们会对Keil至少注释是中文的。V5和IAR工程结构进行对应的改动,使得更容易理解,这里我们新建了一个名为“bsp”的组件,专门用来存放YS-F4Pro开发板板载外设的驱动文件,比如图中的bsp_led.c就是开发板上3个LED的驱动实现,并实现了简单的便使用。类似bsp_le
11、d.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没有句柄结构体。这 两 个 结 构 体 都 是 定 义 在 外 设 对 应 的 驱
12、 动 头 文 件 中 , 比 如stm32f4xx_hal_usart.h文件。初始化结构是做为句柄结构体的一个成员通过指针被,而句柄结构体则在外设HAL函数库实现被使用,比如在stm32f4xx_hal_usart.c文件。这两个结构体内容几乎性,理解这两个结构体内容对我们编程非常有帮助。了外设的所有可选属nPin:引脚编号选择,一个GPIO外设有16个引脚可选,这里根据电路原理图选择目标引脚,参数可选:GPIO_PIN_0、GPIO_PIN_15 和 GPIO_PIN_ALL 。很多时候我们可以使用或运算选择多个:GPIO_PIN_0|GPIO_PIN_4。nMode:引脚工作模式选择,前
13、面内容了引脚有八种基本工作模式,选择结合到具体的外设可以有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_M
14、ODE_EVT_RISING外部模式:上升沿触发GPIO_MODE_EVT_FALLING外部模式:下降沿触发GPIO_MODE_EVT_RISING_FALLING外部模式:上升沿和下降沿都触发nPull:上拉或者下拉选择,用于输入模式,可选:GPIO_NOPULL:不上下来;:使能上拉;GPIO_PULLUPGPIO_PULLDOWN:使能下拉。nSpeed : 引脚最大输出速度, 可选: GPIO_SPEED_FREQ_LOW:低速(2MHz);中 速 (10MHz) ; 快 速 (50MHz) ; 高 速(100MHz) 。nAlternate:引脚复用功能的选择。具体看“stm32f4xx_hal_gpi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年博物馆教育资源与多元智能对接
- 2026年餐饮业预防食物中毒关键控制点培训
- 2026年止痛药合理使用讲座课件
- 2026年小学生美术创造力培养的实践与效果评估
- 2026年文化金融支持绿色文化项目发展
- 2026年银行客户经理信贷业务入门与风控要点
- 2026年原辅料入厂检验标准制定与检验频次优化
- 肌内注射:中职护理案例分析
- 2026年平台经济下外卖骑手权益保障与职业发展困境调研
- 2026年银行突发公共卫生事件演练
- 教育局中小学考试命题管理方案
- 光大金瓯资产管理有限公司笔试
- 2025年中国邮政集团有限公司湖北省分公司招聘笔试备考试题及完整答案详解1套
- 2025年建筑施工特种作业人员考试建筑电焊工题库(附答案)
- 构建人类命运共同体+课件-2025-2026学年高中政治统编版选择性必修一
- 2025年善意的谎言辩论会材料及流程
- 2025年辽宁卷历史高考试卷(原卷+答案)
- 检验科个人防护培训课件
- 小儿骨科课件
- 2025年不动产登记业务知识试题及答案
- 2025年内部审计人员考试题库
评论
0/150
提交评论