STM32的功能引脚重映射和复用功能
stm32 PWM实验
今天对AFIO有了正确的认识。
在使用引脚的重映射功能和外部中断时需要使用AIFO时钟。
贴一段官方手册对AFIO的解释:
为了优化64脚或100脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用
重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。
这次PWM实验要实验的功能就是呼吸灯。
配置步骤如下:
1:使能GPIO和TIM1时钟;
2:配置GPIO,MODE查中文参考手册确定为为AF_PP;
3:配置定时器;
4:配置TIM1_CH1输出比较函数;
5:因为TIM1为高级定时器,普通定时器在完成以上设置了之后,就可以输出 PWM 了,但是高级定时器,我们还需要使能刹车和死区寄存器( TIM1_BDTR)的 MOE 位,以使能整个 OCx(即 PWM)输出。库函数的设置函数为:
TIM_CtrlPWMOutputs(TIM1,ENABLE);// MOE 主输出使能
6:使能预装载;
7:使能自动重装载;(区别仅在于是否是本次还是下一个周期进行改变,可写,可不写)8:使能定时器。
贴出timer.c
void PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1|RCC_APB2Periph_GPIOA,ENABLE);
STM32单片机的重映射与地址映射的使用方法及步骤
STM32单片机的重映射与地址映射的使用方法及步骤
重映射
STM32中对于一些端口的外设已经被其他引脚所使用,这是就需要用端口重映射来解决了,很方便。
以USART1为例
重映射的步骤为:
打开重映射时钟和USART重映射后的I/O口引脚时钟,
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
I/O口重映射开启。
GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);
配制重映射引脚,这里只需配置重映射后的I/O,原来的不需要去配置。
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_A F_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_I N_FLOATING;GPIO_Init(GPIOB,12345678
这样就可以了,很简单。
地址映射
对于地址映射是在查重映射时发现的,感觉ST的库很机智,就记录下来。
首先看一下M3 存储器映射
我们的操作就在这512MB的地址进行。
在LED灯的程序中,存在宏定义:
#defineGPIOC_BASE(APB2PERIPH_BASE+0x1000)#defineAPB2PERIPH_BASE (PERIPH_BASE+0x10000)#definePERIPH_BASE((uint32_t)0x40000000)123
STM32端口复用和端口重映射?什么是端口复用重映射?
STM32端口复用和端口重映射?什么是端
口复用重映射?
对于(单片机)而言,GPIO引脚配置是最基本的,也是最重要的,因为所有的((信号))输入和(控制)输出都是通过这些配置起作用的。这里就不得不提到单片机的复用功能AF(Al(te)rnate Func(ti)on),这篇文章我们说一说复用功能。
(STM32)Fxx系列单片机的GPIO可以配置为浮空输入(input floating)、上拉输入(input pull-up)、下拉输入(input pull-down)、(模拟)输入((analog))、开漏输出(output open-drain)、推挽输出(ouput push-pull)、复用开漏输出(alternate function open-drain)、复用推挽输出(alternate function push-pull)等8种模式。
先说明一下开漏输出和推挽输出的区别。
STM32Fxx系列单片机的输出电路由两个MOS管,分别是P-MOS 和N-MOS。
在开漏输出模式下,P-MOS管不工作,只有N-MOS管工作。若输入数据(寄存器)的值为0,则N-MOS导通,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止;由于P-MOS不工作,此时IO口既不是高电平,也不是低电平,这种状态被称为高阻态。
STM32F1xx IO口基本结构
在推挽输出模式下,若输出数据寄存器的值为0,则N-MOS导通,P-MOS截止,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止,P-MOS导通,IO口输出高电平。
STM32功能引脚端口复用和重映射
STM32功能引脚端口复用和重映射
在STM32系列微控制器中,每个引脚都有一个默认的功能。通过端口复用,我们可以将一个引脚的默认功能改变为其他的功能。每个引脚都有一个对应的功能选择字,可以通过设置这个字来实现不同的功能。引脚的功能可以是GPIO输入输出、模拟输入输出、定时器输入输出、串行通信等等。
端口复用功能使我们可以在同一个引脚上实现多种不同功能的选择。比如,一个IO引脚默认是用作GPIO输入输出的,可以通过端口复用将其改为定时器的输入或输出引脚,实现定时器功能。
在一些情况下,系统的引脚数量有限,无法满足需求,此时就可以使用引脚重映射来实现更多的功能。引脚重映射是将一个引脚的默认功能映射到其他引脚上,可以实现多个引脚共享一个功能。引脚重映射需要特定的硬件支持,不是所有引脚都支持重映射。可以通过引脚映射寄存器来设置引脚重映射。
引脚重映射的功能让系统设计更加灵活和可扩展。在一个引脚只能实现一个功能的情况下,通过重映射可以将多个引脚的功能映射到一个引脚上,实现多个功能的共享。
端口复用和重映射的具体实现方式和寄存器设置是根据不同型号的STM32微控制器而有所不同的。在开发过程中,需要查阅相关的文档和手册,了解具体的端口复用和重映射的功能和设置方法。
总之,STM32微控制器的功能引脚可以通过端口复用和重映射实现多种不同的功能。端口复用可以改变引脚的默认功能,而重映射可以实现多个引脚共享一个功能。这些功能增强了系统的灵活性和可扩展性。在实际
应用中,需要根据具体需求选择适当的引脚复用和重映射方式,以满足系统的需求。
STM32通俗介绍
简述
1STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出)
①浮空输入_IN_FLOATING
②带上拉输入_IPU
③带下拉输入_IPD
(所谓上拉就是接一电阻到电源;下拉就是接一电阻到地。也就是说带上拉就是口初始的时候是高电平,下拉就是低电平。)
④模拟输入_AIN
⑤开漏输出_OUT_OD
⑥推挽输出_OUT_PP
⑦复用功能的推挽输出_AF_PP
⑧复用功能的开漏输出_AF_OD
1.1 I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。比如:
1.1.1 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
1.1.2 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。
1.1.3 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。输入模式。
STM32F103C8T6,ST...
STM32F103C8T6,ST...
STM32F103C8T6, STM32F103CBT6, STM32F103C8U6, STM32F103CBU6 引脚功能定义
Pin
39PB3JTDO/TIM2_CH2/PB3/TRACESWO/SPI1_
SCK
I/O FT 220300 Degrees Pin 40PB4JNTRST/TIM3_CH1/PB4/SPI1_MISO I/O FT 220400 Degrees Pin
41PB5PB5/I2C1_SMBAl/TIM3_CH2/SPI1_MOSI I/O -220500 Degrees Pin 42PB6PB6/I2C1_SCL/TIM4_CH1/USART1_TX
I/O FT 220600 Degrees Pin 43PB7PB7/I2C1_SDA/TIM4_CH2/USART1_RX
I/O FT 220700 Degrees Pin 44BOOT0BOOT0
Input -220800 Degrees Pin 45PB8PB8/TIM4_CH3/I2C1_SCL/CAN_RX I/O FT 220900 Degrees Pin
46PB9PB9/TIM4_CH4/I2C1_SDA/CAN_TX
I/O FT 2201000 Degrees Pin 47VSS_3VSS_3Power -2201100 Degrees Pin
48
VDD_3
VDD_3
Power
-
220
120
0 Degrees
(1)表⽰引脚默认功能定义名称,表⽰引脚全功能定义名称,包括引脚默认复⽤功能定义和重映射复⽤功能定义;
stm32引脚分配原则
stm32引脚分配原则
STM32的引脚分配原则主要包括以下几点:
1. 功能优先:根据实际需求,将引脚分配给需要实现的主要功能。例如,如果需要使用ADC(模数转换器)功能,那么应该将相应的引脚分配给ADC模块。
2. 互斥原则:有些功能不能或不应该同时使用某些引脚。例如,PWM(脉冲宽度调制)和UART(通用异步收发器)通常不能使用相同的引脚,因为它们的工作原理和信号特征不同。
3. 复用原则:STM32的许多引脚都可以被配置为多种功能。根据实际需求,可以将一个引脚配置为多种功能,以便在需要时切换。例如,某些引脚可以作为普通的GPIO(通用输入/输出)引脚使用,也可以配置为PWM或UART等其他功能。
4. 扩展性原则:在分配引脚时,应该考虑到未来的扩展和升级。例如,如果预计将来会添加更多外设或扩展板,那么应该尽量保留一些引脚用于未来的连接。
5. 统一性原则:如果同一功能的多个外设或信号需要使用相同类型的引脚,那么应该尽量将它们分配到相同的引脚上,以便于管理和维护。
6. 避免冲突原则:在分配引脚时,应该避免与其他硬件设备的引脚发生冲突。例如,如果已经有一个外部设备使用了某个引脚,那么应该避免将该引脚分配给STM32的其他功能。
总之,在STM32的引脚分配中,应该根据实际需求和硬件条件
综合考虑以上原则,以确保系统的稳定性和可维护性。
STM32复用功能重定义说明__《STM32管脚重定义》一文的误区
STM32复⽤功能重定义说明__《STM32管脚重定义》⼀⽂
的误区
在⽹上看到这么⼀篇关于STM32复⽤功能重定义的⽂章,其中有很多误读的部分,本⼈做⼀些修正,望⾼⼿指教!其⽂如下:
“
近来在进修STM32,在BZ上⼀篇关于的串⼝通信⽂章⾥有这么⼀段代
码:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);
当初是参考开辟的⾥⼦写的⼀向对GPIOD或上“RCC_APB2Periph_AFIO”这句话的意思没搞懂,经由过程这⼏天在⽹上查找材料和看⼿册,终于⾼清楚了,不敢独享,欲望能对跟我⼀样的新⼿有所帮助吧o(∩_∩)o...
STM32上有很多I/O⼝,也有很多的内置外假想I2C,ADC,ISP,USART等,为了节俭引出管脚,这些内置外设根蒂根基上是与I/O⼝共⽤管脚的,也就是I/O管脚的复⽤功能。然则STM32还有⼀希罕之处就是:很多复⽤内置的外设的I/O引脚可以经由过程重映射功能,从不合的I/O管脚引出,即复⽤功能的引脚是可经由过程法度改变的。知道了这些我们就不难懂得上⽅代码的意思了,法度顶⽤到的USART2外设的TX,RX分别对应PA2,PA3,然则我的进修板上的PA2,PA3引脚接了其他设备,然则为了还要⽤USART2,“RCC_APB2Periph_GPIOD |RCC_APB2Periph_AFIO”就打开了GPIOD重映射功能把USART2设备的TX,RX映射到PD5,PD6上,我们在这两个引脚上接上MAX232串⼝芯⽚就可以应⽤USART2串⼝通信了。那为看官该问:“USART2是不是可以映射到随便率性管脚呢?”答案是否定的,它只能映射到固定的管脚,下图是USART2重映射表
一文看懂stm32的引脚的两种用途:GPIO和AFIO
一文看懂stm32的引脚的两种用途:GPIO和AFIO
stm32的引脚有两种用途:GPIO(generalpurposeio)和AFIO (alternatefuncTIonio)
对于一些引脚(视芯片而定),这两种用途都没有,如在64脚产品中,OSC_IN/OSC_OUT 与作为GPIO端口的PD0/PD1共用一样的引脚,而在100、144引脚产品中,这四个功能各有引脚与之对应,不互相冲突,所以OSC_IN/OSC_OUT既不作GPIO也不作AFIO,当然,这样的引脚不是讨论重点。
1、引脚的配置
不论是作GPIO还是做AFIO,都要对引脚进行配置。在固件库函数中,用GPIO_Init()函数对引脚进行配置,并不是说这个函数带了GPIO字样就是要当做GPIO来用,而是把它纳入GPIO的范畴来讨论。
所谓配置,就是引脚上的片上资源连接方式,如上拉电阻、密特触发等等。理解了配置,也就能明白配置与模式的区别。
特别得,在下文中将会专门讨论一下输出配置中的推挽与开漏。
2、复用功能
复用功能有两种:没有重映像、重映像(包括部分重映像、完全重映像),使用引脚用作AFIO功能,同样需要对其进行配置。
这三句话来自参考手册,但我对第一句和注意有疑问,第三节讲。如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。输入配置则与GPIO 没有区别。
为什么输出模式有专门的复用模式而输入则没有呢。因为输出是由芯片内部电路驱动的,必须选择这个驱动来自哪一个外设,是GPIO还是复用此管脚的其他外设,也就是选择该管脚在内部是与哪个外设相连的,不说明这个就会发生信号的错乱。而输入则不同了,输入信号是由芯片外的信号驱动的,虽然该信号进入芯片内部后可能有不同的去向,但不需
STM32F103RCT6引脚功能及使用
STM32F103RCT6引脚功能及使用
1.引脚定义:STM32F103RCT6一共有64个引脚,标有PA0~PA15、
PB0~PB15、PC0~PC15、PD0~PD15、PE0~PE15等标识。
2.引脚功能:STM32F103RCT6引脚可以设置不同的功能,包括GPIO
(通用输入输出)、外部中断、定时器、串口通信、SPI、I2C等。
3.引脚复用:STM32F103RCT6支持引脚的复用功能,通过将引脚配置
为不同的复用功能,实现不同的外设功能。比如可以将一些引脚配置为串
口1的TX功能,将另一个引脚配置为串口1的RX功能。
4.引脚模式设置:对于GPIO引脚,可以设置为输入模式、输出模式
或者复用功能模式。输入模式可以获取外部信号并进行处理,输出模式可
以控制外部设备。
5.引脚中断:STM32F103RCT6芯片支持外部中断功能,可以通过配置
一些引脚为外部中断输入来实现外部中断的响应。当外部信号引发中断时,芯片可以立即执行中断服务程序。
6.引脚状态检测:通过读取引脚的状态,可以检测引脚的逻辑电平,
从而判断外部信号的状态。
7.引脚驱动能力:对于输出引脚,可以设置不同的驱动能力,以适应
不同电平或者负载要求。
8.引脚电平转换:STM32F103RCT6芯片支持5V和3.3V两种电平转换
方式,可以通过引脚配置来实现。
9.引脚数据通信:除了GPIO功能外,STM32F103RCT6芯片还支持多种串口通信协议,包括UART、SPI、I2C等。这些通信协议可以通过引脚配置来实现。
总之,STM32F103RCT6芯片具有丰富的引脚功能,能够满足不同应用场景的需求。用户可以根据具体的应用要求,通过配置芯片的引脚功能和模式,实现对外设的控制和通信。同时,使用STM32系列的开发工具和文档,可以方便地进行开发和调试。
STM32功能引脚端口复用和重映射
STM32功能引脚端口复用和重映射
端口复用是指一个引脚可以同时用于不同的外设功能。每个引脚都有一个默认的功能,但根据需要,可以将其配置为其他功能。这样,同一个引脚可以在不同的时间用于不同的外设,从而实现更灵活的系统设计。
重映射是指将一个引脚的默认功能切换到另一个引脚。这样可以实现更多的功能引脚的分配和灵活性。
在STM32系列微控制器中,端口复用和重映射功能是通过复用矩阵和AFIO寄存器来实现的。
复用矩阵是一个硬件单元,用于控制引脚的端口复用。每个引脚可以配置为多达数个复用功能之一、通过配置相应的复用矩阵,可以选择所需的功能。
AFIO寄存器是配置引脚的重映射功能的控制寄存器。通过设置相应的寄存器位,可以将一些引脚的默认功能重映射到另一个引脚,同时也可以取消重映射,恢复到默认功能。
引脚端口复用和重映射的具体步骤如下:
首先,需要确定所需的引脚功能。查阅相关的参考手册或数据手册,可以了解到每个引脚的默认功能以及所有可能的复用功能。
然后,根据需要配置复用矩阵。复用矩阵通常是通过设置GPIO口模式寄存器来实现的。
配置复用矩阵时,需要注意以下几点:
1.每个引脚只能选择一种功能,不能同时选择多种功能。
2.不同的引脚可能有不同的复用功能选项,需要确保所选择的功能是合适的。
3.复用功能是互斥的,即其中一个引脚的复用功能被选中后,其他引脚将失去该功能选项。
最后,如果需要进行重映射,可以通过配置AFIO寄存器来实现。重映射功能通常是通过设置AFIO复用寄存器来完成的。
配置重映射时,需要注意以下几点:
1.不是所有的引脚都支持重映射功能,需要查阅相关的参考手册或数据手册来确定。
STM32的功能引脚重映射和复用功能
STM32的功能引脚重映射和复用功能
STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能,本文对一些在使用引脚重映射时所遇到的有关问题加以说明。
我们知道每个内置外设都有若干个输入输出引脚,一般这些引脚的输出脚位都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的脚位外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的脚位。下面是STM32F103xC中有关USART3引脚的摘要片段;
从这里可以看出,USART3_TX的默认引出脚是PB10,USART3_RX的默认引出脚是PB11;但经过重映射后,可以变更USART3_TX的引出脚为PD8,变更USART3_RX的引出脚为PD9。
STM32中的很多内置外设都具有重映射的功能,比如USART、定时器、CAN、SPI、I2C等,详细请看STM32参考手册(RM0008)和STM32数据手册。
有些模块(内置外设)的重映射功能还可以有多种选择,下面是RM0008上有关USART3输入输出引脚的重映射功能表:
从这个表中可以看出,USART3的TX和RX引脚默认的引出脚位是PB10和PB11,根据配置位的设置,可以重映射到PC10和PC11,还可以重映射到PD8和PD9。
一个模块的功能引脚不管是从默认的脚位引出还是从重映射的脚位引出,都要通过GPIO端口模块实现,相应的GPIO端口必须配置为输入(对应模块的输入功能,如USART的RX)或复用输出(对应模块的输出功能,如USART的TX),对于输出引脚,可以按照需要配置为
stm32重映射功能原理
stm32重映射功能原理
STM32系列微控制器是一款广泛应用于嵌入式系统开发的芯片,其具备多种强大的功能。其中,重映射功能是一项重要特性,它可以将
某些外设的引脚与特定的引脚功能进行映射,提供更大的灵活性和适
应性。本文将深入探讨STM32重映射功能的原理和应用。
1. 重映射功能的概述
在传统的微控制器设计中,每个外设都会占用特定的引脚。然而,当外设数量增加时,引脚资源可能会变得不足。为了解决这一问题,STM32系列微控制器提供了重映射功能。通过重映射,可以将某些特
定引脚的功能重新定义为其他外设所需的引脚功能,从而释放出更多
的引脚资源。
2. 重映射功能的实现原理
STM32微控制器通过内部寄存器来实现重映射功能。每个引脚都
有一个对应的重映射寄存器,用于设置该引脚的映射信息。寄存器中
的位字段代表了引脚的功能和映射方式。通过对这些寄存器位字段的
设置,可以将引脚的功能映射到特定外设。
3. 重映射功能的设置方法
在STM32的开发环境中,可以使用相关的开发工具和软件库来进行重映射功能的设置。通常,在初始化外设时,可以通过相应的函数
来配置重映射功能。具体而言,可以使用GPIO库中的函数来设置引脚的映射模式,或者使用AFIO库中的函数来设置引脚的功能映射。
4. 重映射功能的应用举例
4.1 UART重映射
在一些特殊的应用场景中,可能需要使用其他引脚作为UART 通信的引脚。通过重映射功能,可以将某些特定的引脚重新配置为UART通信所需的引脚功能,从而满足特定需求。
4.2 TIM重映射
定时器(Timer)是STM32系列微控制器中常用的外设之一。通过重映射功能,可以改变定时器的引脚映射,实现更复杂的时序控制和计数功能。这对于特定的应用,如PWM输出等,非常有用。
STM32的功能引脚重映射和复用功能
STM32的功能引脚重映射和复用功能
STM32是意法半导体公司推出的一系列32位ARM Cortex-M处理器的
微控制器系列产品。它主要用于嵌入式系统和物联网设备中,具有高性能、低功耗和丰富的外设功能。在STM32微控制器中,功能引脚重映射和复用
功能是非常重要的特性之一,它可以提高引脚的灵活性和可扩展性。下面
将详细介绍STM32的功能引脚重映射和复用功能。
功能引脚重映射是STM32微控制器系列中的一项功能,它允许用户将
一些功能引脚的功能重新映射到其他引脚上。这样就能够根据具体的应用
需求来灵活配置引脚的功能,以适应不同的外设和接口。通过功能引脚重
映射,用户可以实现一些引脚的多种不同功能,提高了引脚的利用率。
STM32的功能引脚重映射功能通过寄存器设置来实现。例如,在
STM32F4系列微控制器中,有一个叫做AFIO(Alternate Function IO)
的外设,它提供了一组寄存器用于配置引脚的功能和重映射。用户可以根
据手册中的引脚映射表来选择合适的重映射功能,并将相应的值写入到AFIO寄存器中即可完成功能引脚重映射。
在实际应用中,功能引脚重映射功能可以用于实现多种不同功能,例
如GPIO、串口、SPI、I2C、定时器等。以串口为例,STM32的串口通信功
能可以通过功能引脚重映射来实现不同的串口接口。对于一些串口功能引脚,可以将其重映射为USART1、USART2、USART3等串口接口,以满足不
同的应用需求。这样就可以通过配置功能引脚重映射,灵活地选择串口接
口和引脚分配,提高了系统的扩展性和可移植性。
stm32重映射功能原理
stm32重映射功能原理
重映射功能是指将STM32微控制器的某些外设引脚映射到不同的管脚上的一
种功能。这在一些特定的应用场景下非常有用,比如当某个外设占用了我们需要使用的管脚时,我们可以通过重映射功能将其映射到其他可用的管脚上,以满足需求。
STM32系列微控制器通常具有多个外设模块,如UART、SPI、I2C等,这些
模块通常需要与外部设备进行通信,并使用管脚来进行数据传输。每个模块都有一组默认的管脚映射,但有时这些默认的管脚可能与其他模块或外设冲突。在这种情况下,我们可以通过重映射功能来解决冲突问题。
重映射功能通过修改特定的寄存器来实现。一般来说,STM32系列微控制器
的引脚可以具有多个功能,如GPIO、复用功能等。重映射功能实质上是将某个外
设引脚映射到对应的复用功能上。通过设置相应的寄存器,我们可以将某个外设引脚映射到我们选择的管脚上,以满足硬件连接的需求。
需要注意的是,重映射功能并不适用于所有的管脚和外设。只有特定的管脚和
外设组合才支持重映射。因此,在使用重映射功能之前,我们需要查看芯片手册,了解哪些管脚和外设是可供重映射的。另外,重映射功能还可能涉及到其他相关设置,如使能某个外设、配置引脚的模式等。
总的来说,重映射功能是STM32微控制器提供的一种灵活的功能,它可以帮
助我们解决管脚资源冲突的问题,提高硬件系统的灵活性和可扩展性。通过合理使用重映射功能,我们可以更好地进行外设配置,满足不同应用场景下的需求。
stm32 gpio复用的原理
stm32 gpio复用的原理
STM32 GPIO复用原理
STM32微控制器具有丰富的GPIO(General Purpose Input/Output)引脚,这些引脚可以用于各种不同的目的。然而,由于硬件资源的限制,有时我们需要在不同的场合下复用相同的GPIO引脚。复用GPIO引脚就是在不同的时间点,通过软件配置,使相同的GPIO引脚具有不同的功能。
STM32的GPIO复用功能主要通过以下步骤实现:
1. **GPIO引脚的功能划分**:STM32将每个GPIO引脚都映射到一个特定的功能,例如,PA1可以被配置为TIM2的CH2,也可以被配置为USART2的TX。这种映射关系由硬件设计决定,无法通过软件改变。
2. **GPIO寄存器的配置**:每个GPIO引脚都有一组对应的寄存器
(GPIOx_CRL, GPIOx_CRH, GPIOx_IDR, GPIOx_ODR, GPIOx_BSRR,
GPIOx_BRR),通过对这些寄存器的配置,可以设定GPIO引脚的方向(输入/输出)、输出类型(推挽/开漏)、输出速度(高速/低速)、输出驱动能力(强/弱)等。
3. **复用功能的切换**:在已经配置了某个GPIO引脚为某一特定功能的情况下,如果需要切换到另一个功能,可以通过对应的寄存器进行重新配置。例如,如果原先将PA1配置为TIM2的CH2,现在需要将其切换为USART2的TX,那么就需要通过相应的寄存器重新配置PA1的电平控制和输出类型等参数。
在进行GPIO复用时,需要注意以下几点:
* 在切换GPIO引脚的功能时,需要确保在切换过程中不会对硬件电路造成影响。例如,如果在切换过程中有电流脉冲通过GPIO引脚,可能会对硬件电路造成损害。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32的功能引脚重映射和复用功能
STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能,本文对一些在使用引脚重映射时所遇到的有关问题加以说明。
我们知道每个内置外设都有若干个输入输出引脚,一般这些引脚的输出脚位都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的脚位外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的脚位。下面是STM32F103xC中有关USART3引脚的摘要片段;
从这里可以看出,USART3_TX的默认引出脚是PB10,USART3_RX的默认引出脚是PB11;但经过重映射后,可以变更USART3_TX的引出脚为PD8,变更USART3_RX的引出脚为PD9。
STM32中的很多内置外设都具有重映射的功能,比如USART、定时器、CAN、SPI、I2C等,详细请看STM32参考手册(RM0008)和STM32数据手册。
有些模块(内置外设)的重映射功能还可以有多种选择,下面是RM0008上有关USART3输入输出引脚的重映射功能表:
从这个表中可以看出,USART3的TX和RX引脚默认的引出脚位是PB10和PB11,根据配置位的设置,可以重映射到PC10和PC11,还可以重映射到PD8和PD9。
一个模块的功能引脚不管是从默认的脚位引出还是从重映射的脚位引出,都要通过GPIO端口模块实现,相应的GPIO端口必须配置为输入(对应模块的输入功能,如USART的RX)或复用输出(对应模块的输出功能,如USART的TX),对于输出引脚,可以按照需要配置为
推挽复用输出或开漏复用输出。
上图是STM32的GPIO端口模块,使用复用功能时的配置。从图中可以看出,配置为复用输出时,该端口对应的GPIO输出功能将不起作用。例如当配置PB10对应的引脚为复用输出功能时,操作PB10对应的输出寄存器将不影响引脚上的信号。
从图中还可以看出,普通的GPIO端口输入功能与复用的输入功能的配置方式没有分别,这意味着在使用引脚的复用输入功能时,可以在这个引脚的输入寄存器上读出引脚上的信号。例如在使能了USART3模块时,可以读GPIOB_IDR寄存器,得到PB11信号线上的当前状态。有不少引脚上配备了来自多个模块的复用功能引出脚,例如本文第一张图中显示的PB10,默认复用功能就有I2C2_SCL和USART3_TX两个功能,TIM2重映射后,TIM2_CH3也使用PB10的复用功能。
在使用引脚的复用功能时,需要注意在软件上只可以使能一个外设模块,否则在引出脚上可能产生信号冲突。例如,如果使能了USART3模块,同时没有对USART3进行重映射配置,则不可以使能I2C2模块;同理如果需要使用I2C2模块,则不能使能USART3模块。但是如果配置了USART3的引脚重映射,USART3的TX和RX信号将从PC10和PC11,或PD8和PD9引出,避开了I2C2使用的PB10和PB11,这时就可以同时使用I2C2模块和USART3模块了。
USART3模块共有5个信号,分别为TX、RX、CK、CTS和RTS,从上面给出的第二张图中可以看出,重映射是对所有信号同时有效。
这5个信号中,在使能了USART3模块后,只有TX和RX是始终与对应的引出脚相连,而其它3个信号分别有独立的控制位,控制它们是否与外部引脚相连,如果程序中不使用某个信号的功能,则可以关闭这个信号的功能,对应的引脚可以做为其它功能的引出脚。例如,当关闭了USART3的CK、CTS和RTS功能并且没有重映射USART3时,PB12、PB13和PB14可以作为通用输入输出端口使用,也可以作为其它模块的复用功能引出脚。
下面这张图是一个内部控制连接的等效示意图,它并不表示真正的内部连接,但可以有效地帮助理解重映射和复用引脚的概念。图中右边引出的信号,分别连接到了本文第三张图的输入输出模块。