STM32 | GPIO口的普通与复用如何配置与用法,本文降从最底层教你如何查看手册运用寄存器来实现GPIO口的配置

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏

🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_0的博客

🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️

📌个人主页 - 勾栏听曲_0的博客📝

🔑希望本文能对你有所帮助,如有不足请指正,共同进步吧🏆

🎇安能以身之察察,受物之汶汶者乎?安能以皓皓之白,而蒙世俗之尘埃乎?📈


GPIO

查看原理图

芯片电路原理图

芯片数据手册

找到引脚定义,理解引脚功能

找到功能对应的Port

微控制器参考手册

 总结


GPIO

GPIO(英语:General-purpose input/output),通用型之输入输出的简称,功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO),如当clk generator, chip select等。

既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。

本次举例的芯片为STM32G4系列,其他芯片配置原理类似,相信你看完这篇文章后会有更深入的理解。


查看原理图

要从底层理解GPIO口配置的原理,必然就少不了看原理图,大家稍安勿躁,一定要克服,现在就由我来带大家认清GPIO的真面目吧,简单易懂,放心食用。

芯片电路原理图

我们只来看芯片区域的原理图,其他外设暂时不看,可观们请看下图:

 STM32芯片和51类似,GPIO引脚也是分为了几组,有PA0~PA15,PB0~PB15等,其中有一些引脚是我们无法配置的,如序号15,31,47,63的VSS等,具体看下图(非灰色的引脚就是无法改变的),然后对照上图就能看出来,这些引脚都是接地或者高电平之类的固定值。

 好的,现在我们进入正题,假如我们想使用PA4引脚的“SPI3_NSS/ I2S3_WS”功能,我们是不是要先知道PA4引脚普通模式是什么功能,复用模式又是什么功能呢,然后再去理解,普通模式与复用模式如何配置。那我们接着往下看。


芯片数据手册

在芯片书手册中,我们主要查询的是各个GPIO口的功能,包括普通模式与复用模式下的各种功能,然后去对照微控制器操作手册来配置GPIO口,话不多说,接下来看图(我们依旧以配置PA4口的“SPI3_NSS/ I2S3_WS”功能举例):

找到引脚定义,理解引脚功能

第一步,找到手册中引脚及引脚描述(Pinouts and pin description)这一章(不同手册名称可能不同,但意思大抵是相同的),然后再向下找到“Pin definition”:

 然后再这一章节中找到介绍PA4的地方,如下,我们就可以知道PA4引脚的普通模式与复用模式的功能分别是什么了,也能找到我们的目标PA4引脚的“SPI3_NSS/ I2S3_WS”功能。

 在这之中,我们发现PA4引脚的普通功能是TT_a,而复用功能有TIM3_CH2, SPI1_NSS, SPI3_NSS/ I2S3_WS, USART2_CK, SAI1_FS_B, EVENTOUT,这么多,我们要找的“SPI3_NSS/ I2S3_WS”就在复用功能中,但是又这么多复用功能,我们要这么去配置来分辨他们呢?我们接着向下走。

找到功能对应的Port

第二步,找到手册中引脚及引脚描述(Pinouts and pin description)这一章(不同手册名称可能不同,但意思大抵是相同的),然后再向下找到“Alternate functions”:

 点击即可看到如下,再找到PA4,后面就是PA4 引脚的复用功能,再这张图中PA4后面找到“SPI3_NSS/ I2S3_WS”功能对应的列头(Port),可以看到是“AF6”:

 接下来我们拿着这个Port“AF6”往下走


微控制器参考手册

我们现在这个手册中找到“General-purpose I/Os (GPIO)”中的“GPIO registers”,在这下面找到寄存器(GPIOx_AFRL),我这里是“GPIO alternatefunction low register(GPIOx_AFRL) (x = A to G)”:

 这里可以看到有两个(GPIO_AFRH),对应的是low reguster低寄存器(低八位)与high reguster高寄存器(高八位),我们需要找的是PA4口,也就是低八位了,所以我们来看9.4.9low register:

 因为我们找的是PA4口。对应的是AFSEL4,下面有四个数据为,现在是定义到了PA4口,那么接下来就要实现“SPI3_NSS/ I2S3_WS”,这个功能对应是port是”AF6“,我们往下翻 可以看到如下,“AF6”对应的数据是“ 0110”。

现在一切都浮出水面啦,最后的配置就是将“GPIOX_AFRH”寄存器赋值,因为找的是PA4口,所以是GPIOA_AFRH,然后也因为是PA,所以我们选择到AFSEL4[3:0],而我们选择的功能对应的Port是“AF6”,而“AF6”对应的是数据是“0110”,所以我们赋值是数据为“0110”,到此,我们就完成了PA4口复用功能“GPIOA_AFRH”的选择了。


 总结

首先在硬件手册中了解 GPIO端口的名称;然后再到数据手册中找到需要使用的GPIO的普通模式还是复用模式,如果是复用模式,在找到该复用模式对应的port是多少;然后再到微控制器手册中找到对应的寄存器赋值,以及port对应的数值,再赋值给寄存器就可以啦。


如果有帮助的话,欢迎点赞收藏哦~🤩,有不同见解或更好的观点也可以在评论区留言,也可以笔者点点关注,互通有无,互相进步。

  • 25
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
使用STM32F103系列芯片时,需要进行GPIO复用配置。要配置复用功能,需要执行以下步骤: 1. 配置相应的GPIO。如果系统的UART需要进行重映射,可以使用GPIO_PinRemapConfig函数进行重映射操作。例如,可以使用以下代码进行UART2的重映射配置GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); 2. 每个IO都有多个寄存器用于配置和控制。其中,常用的寄存器有以下几个: - GPIOx_CRL:端配置寄存器,用于配置低8位引脚的模式、速度和上下拉等设置; - GPIOx_CRH:端配置寄存器,用于配置高8位引脚的模式、速度和上下拉等设置; - GPIOx_IDR:端输入寄存器,用于读取引脚的输入状态; - GPIOx_ODR:端输出寄存器,用于设置引脚的输出状态; - GPIOx_BSRR:端位设置/清除寄存器,用于设置或清除引脚位的状态; - GPIOx_BRR:端位清除寄存器,用于清除引脚位的状态; - GPIOx_LCKR:端配置锁存寄存器,不常用。 3. 在配置GPIO复用时,需要注意一些常见问题。例如,UART和SPI之间可能存在冲突,需要关闭SPI的时钟。另外,要仔细分析程序,最常见的问题可能是RCC(时钟控制)配置不正确。可能会出现一些功能模块的使能导致其他模块不正常工作的情况。因此,在配置时需要仔细检查RCC相关的设置,确保没有冲突。 以上是关于STM32F103的GPIO复用配置的一些说明。具体的配置步骤和代码实现可以根据具体的需求和应用进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [STM32F103_USART_GPIO配置及相应的IO设置](https://blog.csdn.net/andrewgithub/article/details/54093412)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [STM32F103 GPIO配置和应用详解](https://blog.csdn.net/weixin_43627022/article/details/103108920)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勾栏听曲_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值