STM32F407gpio

GPIO

输入输出模式介绍

输入模式
1.四种输入模式,模拟输入;上拉输入;下拉输入;浮空输入
2.模拟信号输入包含模拟输入,剩下三种输入方式均为数字输入
3.三种数字信号输入区别为,I/O口悬空状态下,输入端电平为高或低或不确定
4.输入为数字信号原理,芯片内部集成有施密特触发器,当外部输入高于阈值为逻辑1,低于阈值为逻辑0
输出模式
1.四种模式,开漏输出,推挽输出,复用开漏输出,复用推挽输出
2.推挽输出,P-mos和N-mos只能有一个导通,另外一个截止,对应高低电平
3.开漏输出,P-mos始终截止,N-mos导通输出低电平,N-mos截止,就处于高阻态,当外接上拉电阻时,由于原本属于高阻态,即可分得所有电压,实现高电平输出
4.由于M4内核相较M3内核在输出端口,内部集成可控上下拉电阻,所以如果内部上拉电阻满足需要,可以不用外部再接上拉电阻

寄存器介绍

GPIO地址定位思路:gpio的各个寄存器,都是放在gpio模块下,gpio模块挂载在AHB1总线上的,而AHB1属于外设模块下的模块
定位描述:通过外设地址,找到AHB1地址,通过AHB1地址定位到GPIO地址,通过GPIO地址定位到GPIO的各个寄存器(见下图)
GPIO寄存器介绍
模式配置寄存器前四个,初始化时配置
1.GPIOx_MODER模式寄存器,输入,输出,模拟,复用
2.GPIOx_OTYPER输出类型寄存器,推挽输出,开漏输出
3.GPIOx_OSPEEDR端口速度寄存器,2,25,50,100Mhz
4.GPIOx_PUPDR上拉下拉寄存器,上拉,下拉,无上拉下拉
读写寄存器
5.GPIOx_IDR输入数据寄存器,只能读取输入数据的值
6.GPIOx_ODR输出数据寄存器 ,可读可写输出的数据
7.1GPIOx_BSRRL,0无操作,1通过ODR写1
7.2GPIOx_BSRRH,0无操作,1通过ODR写0
8.GPIOx_LCKR端口配置锁定寄存器,锁定完端口配置无法修改
9.复用功能寄存器GPIOx_AFRL&&GPIOx_AFRH

GPIO库函数介绍

1.GPIO_DeInit()将各个GPIO模块的时钟非使能了
2.GPIO_Init()初始化配置,如果输入只配置mode以及上拉下拉电阻,如果输出,那么还包括输出类型以及输出速度
3.GPIO_StructInit(),对GPIO结构体变量赋写好的值
4.GPIO_PinLockConfig()用来锁定端口配置,具体原理不清楚待补充
5.GPIO_ReadInputDataBit()读取IO外部输入高低电平
6.GPIO_ReadInputData()将外部输入的16个IO口的数据读出来
7.GPIO_ReadOutputDataBit()读取IO输出的值
8.GPIO_ReadOutputData()读取输出16个IO口的数据
9.GPIO_ResetBits()操作的是BSRRH,写1清除
10.GPIO_WriteBit()操作的是,可以写1可以写0
11.GPIO_Write()用来写ODR寄存器,设置输出值
12.GPIO_ToggleBits()异或操作,操作ODR,将相应位的值输出反转
13.GPIO_PinAFConfig()GPIO引脚映射到复用功能上

GPIO配置步骤

1.使能AHB1的时钟
2.初始化GPIO模式
3.输入数据监控,输出数据配置,根据需要配置实现想要的功能

GPIO资源

1.7组GPIO,每组16个IO口,共112个IO口
2.GPIOA的基地址为0x40020000
3.两两GPIO之间有0x400字节的偏移
4.每组GPIO有9个寄存器,占用0x24个字节

GPIO复用功能

1.GPIO时钟使能(包括时钟链路配置以及GPIO模块使能)
2.复用功能挂载APB下的时钟使能(包括APB以及复用功能模块使能)
3.GPIO输出及复用模式配置
4.GPIO与复用功能相映射
5.复用功能寄存器配置

位操作,寄存器操作,库函数操作

位操作:根据基地址,偏移地址直接找到寄存器对应位,进行赋值即可
寄存器操作:通过封装好的结构体变量对相应寄存器进行配置
库函数操作:使用芯片厂商封装好的函数,有校验功能,使用起来更加安全,避免误操作
HAL库函数:待补充

寄存器图片:
1.外设内存到AHB1内存
在这里插入图片描述
2.外设基地址
在这里插入图片描述
3.外设地址到AHB1基地址
在这里插入图片描述
4.AHB1基地址到GPIOD基地址
在这里插入图片描述
5.GPIOD基地址到GPIOD的每一个寄存器(强制类型转换基地址就变成gpio结构体变量)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/48497e3b409b4b91a00ea339e0d141ff.png
6.GPIO变量,就映射成了gpio的各个寄存器
在这里插入图片描述

  • 48
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]和\[2\]提供了关于STM32F407GPIO配置的代码示例。在这些示例中,使用了GPIO_InitTypeDef结构体来定义GPIO的配置参数,然后通过调用相应的函数来进行GPIO的初始化和设置。在引用\[1\]中,使用了GPIOB的Pin_10引脚作为输出模式,并设置了推挽输出和下拉。而在引用\[2\]中,使用了GPIOF的Pin_9引脚作为输出模式,并设置了推挽输出和上拉。这些代码示例展示了如何使用STM32F407GPIO模块进行配置和控制。 引用\[3\]提供了关于输入模式的配置示例。在这个示例中,使用了GPIOE的Pin_9引脚作为输入模式,并设置了上拉。这个示例还提到了外接了一个NPN型的限位开关,用来获取开关状态。 综上所述,STM32F407GPIO模块可以通过配置相应的参数来实现不同的输入和输出功能。可以根据需要选择不同的引脚和模式进行配置,并通过相应的函数进行控制。 #### 引用[.reference_title] - *1* *3* [STM32F407入门学习(1)---GPIO配置](https://blog.csdn.net/shadowfiend10086/article/details/53229724)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [STM32F407GPIO设置流程、和相关寄存器的理解及总结](https://blog.csdn.net/weixin_47937575/article/details/123620052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值