您的位置 首页 报告

STM32学习笔记之串口重映射

在进行原理图设计的时候发现管脚的分配之间有冲突,需要对管脚进行重映射,在手册中了解到STM32上有很多IO口,也有很多的内置外设像:I2C,

在进行原理图规划的时分发现管脚的分配之间有抵触,需要对管脚进行重映射,在手册中了解到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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部