对于STM32F4库函数中GPIO_PinAFConfig()函数的解读,对复用功能的理解

这篇具有很好参考价值的文章主要介绍了对于STM32F4库函数中GPIO_PinAFConfig()函数的解读,对复用功能的理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、文章概述:在跟着野火学习STM32F07课程使,到串口这一章节,我不太理解GPIO_PinAFConfig()函数的意思。后来经过,查找资料,自己计算GPIO_PinAFConfig()函数内的内容,最终理解的GPIO_PinAFConfig()函数的意思是:将外设(形参一)的某个引脚(形参二)用作什么功能(参数三)。那么在这里的意思是将GPIOA的9、10引脚用作USART1。当然,在stm32F07的手册中也说明了PA9和PA10分别作为串口1的TX和RX。

2、怎么发现的问题?在做实验:实现USART1的通信控制RGB中,发现使用到了GPIO_PinAFConfig()这一函数,却无法理解其意思,野火的代码在这里的只有简单的注释。

下面我将野火的代码拷一下:

void USARTx_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;
		
  RCC_AHB1PeriphClockCmd(USARTx_RX_GPIO_CLK|USARTx_TX_GPIO_CLK,ENABLE);

  /* 使能 USART 时钟 */
  USARTx_CLOCKCMD(USARTx_CLK, ENABLE);
  
  /* GPIO初始化 */
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  
  /* 配置Tx引脚为复用功能  */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Pin =  USARTx_TX_PIN  ;  
  GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStructure);

  /* 配置Rx引脚为复用功能 */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Pin =  USARTx_RX_PIN;
  GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStructure);
  
 /* 连接 PA10 到 USART1__R10*/
 // 意思是想把GPIOA的引脚PA10复用成USART1
  GPIO_PinAFConfig(USARTx_RX_GPIO_PORT,USARTx_RX_SOURCE,USARTx_RX_AF);

  /*  连接 PA9 到 USART1_T9*/
  // 意思是想把GPIOA的引脚PA9复用成USART1
  GPIO_PinAFConfig(USARTx_TX_GPIO_PORT,USARTx_TX_SOURCE,USARTx_TX_AF);
  
  /* 配置串DEBUG_USART 模式 */
  /* 波特率设置:DEBUG_USART_BAUDRATE */
  USART_InitStructure.USART_BaudRate = USARTx_BAUDRATE;
  /* 字长(数据位+校验位):8 */
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;	
  /* 停止位:1个停止位 */
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  /* 校验位选择:偶校验 */  
	USART_InitStructure.USART_Parity = USART_Parity_No;
  /* 硬件流控制:不使用硬件流 */
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  /* USART模式控制:同时使能接收和发送 */
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  /* 完成USART初始化配置 */
  USART_Init(USARTx, &USART_InitStructure); 
	
  /* 使能串口 */
  USART_Cmd(USARTx, ENABLE);
}

代码来自野火

3、解释GPIO_PinAFConfig()函数。

先说我弄懂后的最终理解,即GPIO_PinAFConfig()函数在这里的意思是将GPIOA的9、10引脚用作USART1。

(1)USART1的写和读引脚如下所示,其中PA9用作TX(写),PA10用作RX(读)。将PA9和PA10 GPIO初始化后,我们需要将其复用为USART1(我的理解是告诉芯片,我要用这两个引脚当串口1的读写接口了)。

gpio_pinafconfig,stm32,单片机,嵌入式硬件

 图一

(2)在AFRH9[3:0]和AFRH10[3:0]这里的取值就是用来描述PA9和PA10 要被复用成什么功能,这里每个引脚都是4位来描述,取值0~15分别选择AF0~AF15,每个AFx都有其意思,如图三所示。AF7表示串口1、2、3。所以这里AFRH9[3:0]和AFRH10[3:0]都要置为0b0111。那么这里只需要使用GPIO_PinAFConfig()函数就可以将GPIOA的AFRH寄存器的AFRH9[3:0]和AFRH10[3:0]置为0b0111。gpio_pinafconfig,stm32,单片机,嵌入式硬件

 图二

gpio_pinafconfig,stm32,单片机,嵌入式硬件

图三 

4、在理解这块内容的时候看了下面的这篇文章,对此表示感谢。大家也可以去看看,该作者对这个函数内容进行了详细的解释。对于STM32F4库函数中GPIO_PinAFConfig()函数的解读-爱码网 (likecs.com)文章来源地址https://www.toymoban.com/news/detail-524601.html

到了这里,关于对于STM32F4库函数中GPIO_PinAFConfig()函数的解读,对复用功能的理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [GD32F4]基于GD32固件库移植cherryusb[STM32F4]

    [GD32F4]基于GD32固件库移植cherryusb[STM32F4] 使用开发板是淘宝买的不知名开发板,没什么好说的,具体的型号是GD32F450VET6。 使用的cherryusb版本是0.9.0版本。 使用的GD32官方固件库版本是:GD32F4xx_Firmware_Library_V3.0.4 cherryusb最牛的地方在于抛弃掉所有的依赖,只需要知道芯片的usb中断

    2024年02月06日
    浏览(49)
  • STM32F4Timer

    ref https://blog.csdn.net/zhuxinmingde/article/details/131784852?ops_request_misc=request_id=biz_id=102utm_term=STM32%20%E9%AB%98%E7%BA%A7%EF%BC%8C%E6%99%AE%E9%80%9A%EF%BC%8C%E5%9F%BA%E6%9C%AC%E5%AE%9A%E6%97%B6%E5%99%A8utm_medium=distribute.pc_search_result.none-task-blog-2 all sobaiduweb~default-1-131784852.142 v99 controlspm=1018.2226.3001.4187 1. Timer re

    2024年02月02日
    浏览(43)
  • 第八步:STM32F4 EXTI

    STM32F4的每个IO都可以作为外部中断输入。 STM32F4的中断控制器支持22个外部中断/事件请求: EXTI线0~15:对应外部IO口的输入中断。 EXTI线16:连接到PVD输出。 EXTI线17:连接到RTC闹钟事件。 EXTI线18:连接到USB OTG FS唤醒事件。 EXTI线19:连接到以太网唤醒事件。 EXTI线20:连接到US

    2024年02月12日
    浏览(44)
  • 第五步:STM32F4端口复用

    STM32 有很多的内置外设,这些外设的外部引脚都是与 GPIO 复用的。也就是说,一个 GPIO 如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用。 例如串口 1 的发送接收引脚是 PA9,PA10 ,当我们把 PA9,PA10 不用作 GPIO ,而用做复用功能串口

    2024年02月12日
    浏览(53)
  • 第三步:STM32F4时钟介绍

    1. STM32 有 5 个时钟源 :HSI 、 HSE 、 LSI 、 LSE 、 PLL 。     ①、 HSI 是高速内部时钟, RC 振荡器,频率为 16MHz ,精度不高。可以直接作为系统   时钟或者用作 PLL 时钟输入。 ②、 HSE 是高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时                 钟源,频率范

    2024年02月12日
    浏览(49)
  • STM32F4X USART串口使用

    串口是MCU与外部通信的重要通信接口,也是MCU在开发过程中的调试利器。串口通信有几个重要的参数,分别是波特率、起始位、数据位、校验位。双方在进行串口通信前必须要约定好通信的参数,否则会导致通信失败。 起始位是自动产生,无需配置,通常是产生一个低电平为

    2024年02月11日
    浏览(56)
  • 基于STM32F4的心电监护仪

    从题目中可以看出该课题来源于 2020年省电赛A题的无线运动传感器节点的设计 ,该作品得过湖北省电赛二等奖,同时也是我本科毕业设计,这里我把自己做的关于心电部分的工作进行一次总结,也对我的大学四年进行一次总结。 处理器板子的选择 本研究的处理器模块选择

    2024年02月03日
    浏览(40)
  • STM32F4X 定时器中断

    定时器(Timer)最基本的功能就是定时,比如定时翻转LED灯,定时向串口发送数据等。除此之外,定时器还可以跟GPIO结合使用,利用定时器产生PWM波形,利用定时器捕捉电平信号等。本章先来讲解定时器的最基本的用法,定时功能。 STM32F4X将定时器分成3类,分别是基本定时器,

    2024年02月12日
    浏览(43)
  • 基于STM32F4开发的智能台灯

    写这篇博客的目的有2个,首先是记录一下学习STM32大半年来的第一个自己动手开发的项目,整理一下开发过程和思路;其次也是希望可以和更多的同行交流开发经验,有什么问题可以多多讨论,集思广益,共同进步~ 开发的智能台灯功能有2个: 1.手动模式:可通过按键调节

    2024年02月05日
    浏览(41)
  • 【STM32】STM32F4调用DSP库实现FFT运算

    最近在整理之前的stm32笔记,打算把一些有价值的笔记发到CSDN分享一下。 在进行模拟/数字信号的转换过程中,当采样频率F大于信号中最高频率 fmax 的 2 倍时(F2*fmax),采样之后的数字信号完整地保留了原始信号中的信息。 设采样频率(单位时间可以采多少个信号样本)为 F

    2023年04月24日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包