STM32 UART 重映射

发布者:科技独行者最新更新时间:2016-07-30 来源: eefocus关键字:STM32  UART  重映射 手机看文章 扫描二维码
随时随地手机看文章
在进行原理图设计的时候发现管脚的分配之间有冲突,需要对管脚进行重映射,在手册中了解到STM32 上有很多I/O口,也有很多的内置外设像:I2C,ADC,ISP,USART等 ,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的 I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的。

第一次这么干感觉心里没底,所以针对USART1在STM32F103RBT6的板子上实现了一把,以下是相关的测试代码:

 

/*****************************************************************************

//函数名:void Uart1_Init(void)

//功能:串口(USART1)重映射初始化配置函数,由TX PA9~PB6    RX PA10~~PB7

*****************************************************************************/

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);

只需要简单的以上三步就能轻松搞定。

关键字:STM32  UART  重映射 引用地址:STM32 UART 重映射

上一篇:关于CH340在STM32实现一键下载电路的研究
下一篇:STM32 TIM重映射

推荐阅读最新更新时间:2024-03-16 15:02

keil5中新建一个STM32工程
前言 相信很多stm32的初学者对于创建一个新的工程还是感觉比较困难的,即使学习了一段时间的stm32,创建一个新工程还是会感到无所适从。相信大家在学习stm32之初都是把整个例程工程文件copy下来,在这个基础上进行修改编程的,这样就省掉了很多烦恼。本人自学stm32已经有好久的一段时间了,现在在准备秋招,顺便也把之前学过的内容复习一遍。在整理stm32资料的时候,突然发现之前自己学习stm32的时候不会自己新建一个stm32工程,所以今天趁空闲之余,学习怎么去创建一个新工程,并记录下来跟大家分享。 创建一个stm32工程的步骤 1. 准备资料 大家可以点击一下网址,下载创建工程时所需的固件库: http://downloa
[单片机]
STM32-systick系统定时器
systick系统定时器 系统定时器存在内核中,是24位的定时器,只能向下递减,嵌套在NVIC中 counter 在时钟的驱动下 在reload的初值开始向下递减计时到0,产生中断置位标志然后又从reload值开始重新递减计数,循环 定时时间计算 t=reload*(1/clk) clk=72M时,t=72*(1/72m)=1us clk=72M时,t=72000*(1/72m)=1ms clk=72M时,t=72000000*(1/72m)=1s 1s=1000MS =1000 000US=1000 000 000NS sysTick属于内核中的外设,他的中断优先级和外设的中断优先级相比,哪个
[单片机]
STM32-systick系统定时器
STM32在程序运行过程中关闭定时器重新打开后定时器不工作的
问题:数码管显示程序放在定时TIM2中断函数里面扫描,想要实现在关闭某一功能的时候数码管不显示。 刚开始的想法是开关关闭,关闭定时器时钟;开关打开,打开定时器时钟;(但实验证明再次打开开关时定时器2却不工作:表现为数码管不显示) 解决办法: 开关关闭,关闭定时器更新中断(即TIM_ITConfig(TIM2,TIM_IT_Update,DISABLE);) 开关再次打开,开启定时器更新中断(即TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);) 关闭中断可以达到不进入定时去中断服务函数,同样达到数码管不显示的目的。
[单片机]
几张图对比STM32各系列产品特性和外设兼容性
STM32产品系列特性比较 下面是STM32F0、F1、F2、F4、L1各产品系列的特性进行对比: 外设兼容性分析对比 对STM32进行过研究的朋友,特别是使用过寄存器开发的朋友应该很明白STM32片上外设,进行过对比的朋友,会发现,各系列MCU的片上外设很多相似之处,甚至完全一样。 下面将F1分别和F0、F2、F4、L1对比一下,大家看看有哪些差异。 1.STM32 F1 与 F0 系列外设兼容性分析对比 2.STM32 F1 与 F2 系列外设兼容性分析对比 3.STM32 F1 与 F4 系列外设兼容性分析对比 4.STM32 F1 与 L1 系列外设兼容性分析对比 Pin引脚对比 S
[单片机]
STM32定时器单脉冲输出
使用stm32cubemx配置外设,代码使用HAL stm32f1 v1.3.1库。 用的是stm32l152c开发板,时钟频率32MHZ。 这里,没有配置中断。 上图的意思是,TI2收到1给正脉冲,触发TIM1开始计数,经过 tDelay后,OC1输出低,经过一个tPulse后,OC1又恢复为高。 The OPM waveform is defined by writing the compare registers (taking into account the clock frequency and the counter prescaler). • The tDELAY is defined b
[单片机]
<font color='red'>STM32</font>定时器单脉冲输出
STM32 GPIO的配置
1STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出) ① 浮空输入_IN_FLOATING ② 带上拉输入_IPU ③ 带下拉输入_IPD ④ 模拟输入_AIN ⑤ 开漏输出_OUT_OD ⑥ 推挽输出_OUT_PP ⑦ 复用功能的推挽输出_AF_PP ⑧ 复用功能的开漏输出_AF_OD 1.1I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动
[单片机]
STM32四行【跳转程序】引申出来的几条重要知识点
1写在前面 上一篇文章《 STM32 IAP应用编程几个要点 》讲述的内容很多朋友都了解过,也都使用过ST官网提供的代码。但使用过的人有许多都没有深入了解,仅仅只是把代码下载到板卡中跑了一下而已(因为代码完全可以使用)。所以,很少有人研究其中细节的问题。 先看一下上图中四行跳转代码,接下来将围绕这四行代码拓展相关的内容。 2STM32是如何实现程序跳转的? 上图四行代码中有几个定义没有贴出来,下面一并贴出来: #define ApplicationAddress 0x8003000 typedef void (*pFunction)(void); pFunction Jump_To_Application; uint
[单片机]
<font color='red'>STM32</font>四行【跳转程序】引申出来的几条重要知识点
基于STM32 MCU的太阳能-LED街灯解决方案
随着化石类能源的日益减少,以及温室气体的过度排放导致全球变暖问题越来越受到重视,人们一方面在积极开发各类可再生新能源,另一方面也在倡导节能减排的绿色环保技术。太阳能作为取之不尽、用之不竭的清洁能源,成为众多可再生能源的重要代表;而在照明领域,寿命长、节能、安全、绿色环保、色彩丰富、微型化的LED固态照明也已被公认为世界一种节能环保的重要途径。太阳能-LED街灯同时整合了这两者的优势,利用清洁能源以及高效率的LED实现绿色照明。 本文介绍的太阳能-LED街灯方案,能自动检测环境光以控制路灯的工作状态,最大功率点追踪(MPPT)保证最大太阳能电板效率,恒电流控制LED,并带有蓄电池状态输出以及用户可设定LED工作时间等功能。
[单片机]
基于<font color='red'>STM32</font> MCU的太阳能-LED街灯解决方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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