STM32 UART1 的引脚复用怎么定义
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 UART1 的引脚复用怎么定义相关的知识,希望对你有一定的参考价值。
参考技术A GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //使能GPIOA的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能USART的时钟
/* USART1的端口配置 */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);//配置PA9成第二功能引脚 TX
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);//配置PA10成第二功能引脚 RX
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* USART1的基本配置 */
USART_InitStructure.USART_BaudRate = 115200; //波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //使能接收中断
USART_Cmd(USART1, ENABLE); //使能USART1
/* USART1的NVIC中断配置 */
NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPriority = 0x02;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);本回答被提问者和网友采纳
STM32 端口复用重映射
什么是端口复用
STM32有很多个外设,外设的外部引脚与GPIO复用。也就是说一个GPIO可以重复使用外设的引脚,这个GPIO作为内置外设使用的时候,就叫做复用
举例:
GPIOA 9 可以作为普通PGIO使用,引脚复用为串口1的发送
GPIOA 10 可以作为普通PGIO使用,引脚复用为串口1的接收
GPIOA1 可以作为普通PGIO使用,复用为外部中断
举例:
串口1的发送接收引脚为PA9 PA10,我们把这两个引脚不用做PGIO,而复用为串口1的发送和接收引脚,叫做端口复用。
如何配置端口复用
端口复用配置过程:(以 USART1 : PA9 PA10串口 为例)
1.配置GPIO时钟:
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
2.配置USART1时钟:
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1, ENABLE);
3.如何配置相对应的GPIO模式
如何配置端口复用
USART_TX 发送端IO口 : 推挽复用输出模式
GPIO_Mode = GPIO_Mode_AF_PP;
USART_RX 接收端IO口 : 浮空输入/上拉输入
GPIO_Mode = GPIO_Mode_IN_FLOATING / GPIO_Mode = GPIO_Mode_IPU
1.配置GPIO时钟
2.配置复用的USART1时钟
3.配置GPIO结构体
什么是端口重映射
每个外设都有若干个输入输出引脚,一般这些引脚也都是固定不变的,但为了让开发工程师更好的安排引脚的功能和走向,引入了重映射的功能。 也就是一个外设的引脚除了具有默认的端口外,也还可以设置重映像寄存器来把这个外设映射到其他GPIO端口。
方便硬件工程师布线,减少干扰。
什么是部分重映射和完全重映射
部分重映射: 功能外设的部分引脚重新映射,还有一部分引脚是原来的默认引脚。
完全重映射: 功能外设的所有引脚都是重新映射。
重映射的配置过程
串口1为例:
① 使能GPIO引脚(重映射后的GPIO引脚)
②使能功能外设
③使能AFIO时钟,重映射必须使能AFIO时钟
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO, ENABLE);
④开启重映射:
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
案例看下篇文章STM32 通用定时输出PWM
以上是关于STM32 UART1 的引脚复用怎么定义的主要内容,如果未能解决你的问题,请参考以下文章