STM32F103 USART1串口重映射功能的实现

发布者:SereneSerenity最新更新时间:2019-08-19 来源: eefocus关键字:STM32F103  USART1  串口重映射 手机看文章 扫描二维码
随时随地手机看文章

我们知道,F103的usart1串口是PA8 PA9的复用功能,我们在使用的时候直接配置这两个引脚,配置复用即可,但有时,在实际工作中,也会采用串口的重映射功能。

在这里插入图片描述

由图可知,usart1是PB6 PB7的重定义功能,也就是重映射功能,话不多说,直接上代码。我使用的是103C8T7,请知悉。


static void Gpio_Config1(void){

GPIO_InitTypeDef GPIO_InitStructure;

/* TX PB6 */

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

/*  RX PB7 */

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

GPIO_Init(GPIOB,&GPIO_InitStructure);

}


static void Usart_Config1(u32 baudrate){

USART_InitTypeDef USART_InitStructure;


USART_InitStructure.USART_BaudRate = baudrate;

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

USART_InitStructure.USART_Parity = USART_Parity_No;

USART_InitStructure.USART_StopBits = USART_StopBits_1;

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

USART_Init(USART_MCU_LCD,&USART_InitStructure);

//USART_ITConfig(USART1,USART_IT_TXE,ENABLE);

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);

USART_Cmd(USART1,ENABLE);

USART_ClearFlag(USART1,USART_FLAG_TC);

}



static void Nvic_Config1(void){

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_Init(&NVIC_InitStructure);

}


void Usart1_Init(u32 baudrate){

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);//usart1功能重映射

Gpio_Config1();

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

Usart_Config1(baudrate);

Nvic_Config1();

}


记住顺序,先使能GPIOB和AFIO,再调用GPIO_PinRemapConfig函数,然后再初始化gpio引脚,再使能USART1,再配置串口,需要中断的话再配置中断,切记不要搞错。其它系列芯片的顺序也是一样的,但是映射的函数是不一样的,请查询后使用。


关键字:STM32F103  USART1  串口重映射 引用地址:STM32F103 USART1串口重映射功能的实现

上一篇:基于STM32的超声波HC-SR04历程
下一篇:基于STM32的超声波传感器测距(含代码)

推荐阅读最新更新时间:2024-11-06 16:42

STM32F103C8T6单片机IAP升级
关于IAP升级的方法和原理,网上已经有很多资料了,这块就不再说了,现在就将bootloader和app配置方法整理如下: APP程序就是一个简单的LED闪烁。 APP设置为从FLASH中启动: STM32F103C8T6单片机flash有64K,前20K空间留给bootloader,从20K之后开始存放APP程序。所以IROM1开始地址设置为 0x8005000,大小为20K。如果APP程序比较大的话,可以修改这个大小值。 然后在程序开始位置设置重新映射复位向量表。让程序从0x8005000位置开始执行。 APP设置为从SRAM中启动: APP要从SRAM中运行,那么就要重新映射SRAM中的复位向量表。 由于在
[单片机]
<font color='red'>STM32F103</font>C8T6单片机IAP升级
STM32F103C8T6在线升级 IAP
stm32程序每次执行都会从基地址0x800 0000开始执行。IAP程序升级的执行是在bootloader引导文件执行后,进行加载、跳转APP程序。所以每次上电后进入BootLoader判断是否需要升级,如果升级则接受bin文件,如果不升级则直接跳转app程序。 BootLoader和app程序的FLASH大小需要根据自己的程序情况自由的分配大小就可以了。 代码:根据正点原子的例程进行修改的 1、由于BootLoader引导程序比较小,我设置的flash大小为0x1800 2、iap函数:由于STM32F103C8T6程序存储容量是64KB,每页的大小为1K字节即1024,所以iapbuf数组设置为512。
[单片机]
<font color='red'>STM32F103</font>C8T6在线升级 IAP
STM32F103C8T6+温湿度传感器DHT11实现温湿度采集
通信原理 单总线通信 DHT11器件采用简化的单总线通信。单总线只有一根数据线,主从机之间的数据交换、控制命令等均由单总线完成。在单总线系统中,只有当主机呼叫从机时,从机才能应答。 挂载于单总线上的设备,必须通过一个漏极开路或三态端口连接至该数据线,以允许设备在不发生数据时能够释放总线。单总线通常要求外接一个4.7kΩ的上拉电阻,这样,当总线闲置时,总线上始终是高电平 传输数据位定义 一次传送40位数据,高位先出。数据格式位: 8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验位。 注:其中湿度小数部分为0。 校验位的数据定义: “8bit湿度整数数据+8bit
[单片机]
<font color='red'>STM32F103</font>C8T6+温湿度传感器DHT11实现温湿度采集
STM32F103单片机使用ULN2003驱动步进电机
最近整理东西,突然发现以前买的一个步进电机模块,以前使用5V单片机驱动的。突然想试试能不能用STM32F103单片机的3.3V直接驱动ULN2003这个芯片。 试了一下ULN2003可以用3.3V电压直接驱动。下面分享下电机驱动的过程。 先看看实物图 单片机使用的是STM32F103C8T6最小系统。电机和驱动板是网上买的整套模块。 驱动板的原理图如下 步进电机使用的是5线4相直流减速步进电机 直径:28mm 电压:5V 步进角度:5.625 x 1/64 减速比:1/64 步距角:5.625 / 64 = 0.087度 (也就是说理论上,你给一个脉冲,电机外部轴转动0.087度)也就是说一个脉冲内部转子
[单片机]
<font color='red'>STM32F103</font>单片机使用ULN2003驱动步进电机
STM32F103控制ADS1115采集模拟信号
程序已经通过 0、定义通道 #define TongDao0 0xc2e3 #define TongDao1 0xd2e3 #define TongDao2 0xe2e3 #define TongDao3 0xf2e3 1、STM32F103的IIC端口初始化 void ads1115_io_init(void) { GPIO_InitTypeDef GPIO_InitStruct; // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitS
[单片机]
STM32F103ZET6 — RTC
简介 RTC 是Real Time Clock 的简称,意为实时时钟。即,提供类似于 PC 上的时间记录信息的功能。既然是实时时钟,则至少应该有秒、分、时等信息。也可以直观的把他理解成为一个计数器,一直累加。但又不同于 CPU 上电后的那些计数器,对于 RTC ,需要支持的是掉电后的继续计数(存在备用电源)。所谓掉电,是指电源Vpp断开的情况下,为了RTC外设掉电可以继续运行,必须给STM32芯片通过VBAT引脚街上锂电池.当主电源VDD有效时,由VDD给RTC外设供电.当VDD掉电后,由VBAT给RTC外设供电.无论由什么电源供电,RTC中的数据始终都保存在属于RTC的备份域中,如果主电源和VBA都掉电,那么备份域中保存的所有
[单片机]
<font color='red'>STM32F103</font>ZET6 — RTC
STM32F103 ZET6和C8T6程序移植
STM32F103ZET6的代码移植到C8T6所要做的修改 ZET6中的system.c、systme.h对应C8T6中的sys.c、sys.h 芯片选择修改:
[单片机]
<font color='red'>STM32F103</font>  ZET6和C8T6程序移植
STM32F103 UART通信讲解
一、串行通信的通信方式 1.同步通信:带时钟同步信号传输,有一根线是同步时钟。例如SPI(全双功)、IIC(半双工)通信接口 2.异步通信:不带时钟同步信号,必须约定好波特率。例如UART(全双功) 二、STM32的串口通信接口 UART:通用异步收发器。 USART:通用同步异步收发器。 STM32F10x系列包含3个USART和2个UART。 都是TTL电平交叉相连即可 与PC机可以使用USB-TTL进行通信。 三、通信引脚 四、常用串口相关寄存器 1.USART_SR状态寄存器:里面一些相关位可以用来判断是否发送接收完成等。 2.USART_DR数据寄存器:通过读写这个寄存器来
[单片机]
<font color='red'>STM32F103</font> UART通信讲解
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved