一、 端口复用功能
N32G45x 有很多的内置外设,这些外设的外部引脚都是与 GPIO 复用的。也就是说,一个 GPIO 如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用。
例如:串口2 的发送接收引脚是 PA2 、PA3 ,当我们把 PA2 、PA3 不用作普通的 GPIO口,而用做复用功能串口2 的发送接收引脚的时候,叫端口复用。
复用功能(使用默认复用功能前必须对端口位配置寄存器编程):
※对于复用的输入功能,端口必须配置成输入模式(浮空、上拉或下拉)且输入引脚必须由外部驱动;
※对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏);
※对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。这时,输入驱动器被配置成浮空输入模式。
当端口配置位 AFIO 时,端口引脚用作外设复用功能,使用前必须对端口位配置寄存器( GPIOx_PL_CFG/GPIOx_PH_CFG )编程。
端口复用的配置过程:
GPIO 端口时钟使能(使用某个 IO 口必须要对时钟进行使能)
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA,ENABLE);
使能复用外设时钟(这里以串口 2 为例)
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH _USART2, ENABLE);
端口模式配置:
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA.2
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA.3
二、 引脚重映射
每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的。引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。
为了使不同器件封装的外设 IO 功能数量达到最优,可以把一些复用功能重新映射到其他一些引脚上。很多内置外设的输入输出引脚都具有重映射的功能。
例如:串口 3 的 TX , RX 引脚是在 PB10 和 PB11 端口,但是同时它有两个映射端口PD8、PD9。开启重映射, PD8 和 PD9 同样可以使用串口 2可以通过软件配置相应的寄存器(AFIO_RMP_CFG )来完成。
端口重映射的配置过程:。
使能 GPIO 时钟(重映射后的 IO );
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOD,ENABLE);
使能功能外设时钟;
RCC_EnableAPB1PeriphClk(RCC_APB2_PERIPH_USART3,ENABLE);
使能 AFIO 时钟:
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO,ENABLE);
对寄存器 AFIO_EXTI_CFGx ,AFIO_RMP_CFG 和 AFIO_ECTRL 进行读写操作前,应当首先打开 AFIO 时钟。
外部中断配置寄存器( AFIO_EXTI_CFGx )
复用重映射配置寄存器( AFIO_RMP_CFG )
事件控制寄存器( AFIO_ECTRL )
开启重映射:
GPIO_PinRemapConfig(GPIO_Remap_USART3, ENABLE);
初始化 GPIO 端口。
三、总结
USART 用哪个时钟,可参看 N32G455X 用户手册内有关 clock register(RCC) 章节或者总线章节。
引脚默认和重定义可以查看数据手册。
端口在复用输出模式下,引脚和输出寄存器断开,并和片上外设的输出信号连接。如果软件把一个 GPIO 脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。
四、Reference:
[1] UM_N32G45x系列用户手册V2.0.0
[2] DS_N32G455系列数据手册V2.0.0
[3] https://blog.csdn.net/weixin_47397155/article/details/119736890
评论