在进行原理图规划的时分发现管脚的分配之间有抵触,需要对管脚进行重映射,在手册中了解到STM32上有许多I/O口,也有许多的内置外设像:I2C,ADC,ISP,USART等,为了节约引出管脚,这些内置外设基本上是与I/O口共用管脚的,也便是I/O管脚的复用功用。可是STM32还有一特别之处便是:许多复用内置的外设的I/O引脚能够经过重映射功用,从不同的I/O管脚引出,即复用功用的引脚是可经过程序改动的。
第一次这么干感觉心里没底,所以针对USART1在STM32F103RBT6的板子上完成了一把,以下是相关的测验代码:
void Uart1_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);//敞开端口B和复用功用时钟
GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);//使能端口重映射
GPIO_InitTypeDef GPIO_InitStructure;
//uart 的GPIO重映射管脚初始化 PB6 usart1_TX PB7 USART_RX
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//悬空输入
GPIO_Init(GPIOB,&GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
USART_InitTypeDef USART_InitStructure;
//串口参数装备:9600,8,1,无奇偶校验,无硬流量操控 ,使能发送和接纳
USART_InitStructure.USART_BaudRate = 9600;
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);
}
扼要剖析重映射过程为:
1.翻开重映射时钟和USART重映射后的I/O口引脚时钟,
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RC C_APB2Periph_AFIO,ENABLE);
2.I/O口重映射敞开.
GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);
3.制造重映射引脚, 这儿只需装备重映射后的I/O,本来的不需要去装备.
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
只需要简略的以上三步就能轻松搞定,完好的例程见附件内容。
例程中完成了重映射之后的串口收发功用。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/260061.html