STM32的功能引脚重映射和复用功能
- 格式:doc
- 大小:359.00 KB
- 文档页数:3
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。
STM32L431RCT6是意法半导体(STMicroelectronics)推出的一款低功耗微控制器,基于ARM Cortex-M4内核。
它具有丰富的引脚功能,下面是STM32L431RCT6的引脚功能及使用的一些常见示例:GPIO引脚(General-Purpose Input/Output):可用于通用输入输出功能,如控制外部设备、读取传感器等。
每个GPIO引脚都可以配置为输入或输出,并具有中断功能。
USART引脚:用于串行通信,如UART(通用异步收发器)或USART(通用同步异步收发器)功能。
USART引脚通常用于与其他设备(如计算机、蓝牙模块、GPS模块等)进行数据通信。
SPI引脚(Serial Peripheral Interface):用于与外部SPI设备(如EEPROM、传感器、显示器等)进行通信。
SPI引脚包括主机端口(MISO、MOSI、SCK)和从机端口(MISO、MOSI、SCK)。
I2C引脚(Inter-Integrated Circuit):用于与其他I2C设备(如温度传感器、加速度计等)进行双线串行通信。
I2C引脚包括SDA(串行数据线)和SCL(串行时钟线)。
PWM引脚(Pulse Width Modulation):用于产生脉冲宽度调制信号,常用于控制电机速度、LED亮度等。
ADC引脚(Analog-to-Digital Converter):用于将模拟信号转换为数字信号。
ADC引脚通常用于读取传感器的模拟信号。
DAC引脚(Digital-to-Analog Converter):用于将数字信号转换为模拟信号。
DAC引脚通常用于产生模拟输出信号,如音频输出等。
这些只是STM32L431RCT6引脚的一些常见功能和用途示例。
具体使用时,你需要根据自己的项目需求和外部设备的要求,合理配置和使用这些引脚。
请参考STM32L431RCT6的数据手册和引脚定义图以获取更详细的信息。
《ARM原理及应用》复习题填空题1.STM32F103是_32_位单片机,内核是ARM公司的___Cortex-M3___。
2.STM32F103最高工作频率___72MHz___。
片内具有多种外设,它们分别是:_GPIO_、_USART_、_I2C_、_SPI_、_ADC_、_DAC_、_TIM_、_RTC_、_IWDG_、_WWDG_。
IWDG:独立看门狗WWDG:窗口看门狗3.STM32103的GPIO端口具有多种配置状态,输入有3种状态,它们分别是_模拟输入_、_浮空输入__和上拉/下拉输入;输出有4种状态,它们分别是_通用推挽输出_、_通用开漏输出_、_复用推挽输出_和_复用开漏输出_。
5.当STM32I/O端口配置为输入时,输出功能被_禁止_,施密特触发器被激活__。
6.STM32的所有端口都有外部中断能力。
当使用外部中断线时,相应的引脚必须配置成输入模式。
7.STM32具有单独的位设置或位清除能力。
这是通过GPIOx->BSRR_和GPIOx->BRR寄存器来实现的。
8.STM32芯片内部集成的12位位ADC是一种逐次逼近(比较)型模拟数字转换器,具有18个通道,可测量16个外部和2个内部信号源。
9.STM32的NVIC管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现时延的中断处理,并有效地处理后到中断。
10.系统计时器(SysTick)提供了1个24位二进制递减计数器,具有灵活的控制机制11.STM32通用定时器TIM的16位计数器可以采用三种方式工作,分别为向上计数模式、向下计数模式和向上下计数模式。
12.STM32系列ARM Cortex-M3芯片支持三种复位形式,分别为上电复位、按键复位和备份复位。
简答题1.什么是嵌入式系统?嵌入式系统一般由哪几部分构成?它与通用计算机有何区别?答:是一种嵌入受控器件内部,为特定应用而设计的专用计算机系统,具有“嵌入性”、“专用性”和“计算机系统”3个基本要素。
STM32F103R4T6, STM32F103R6T6 引脚功能定义Pin 45PA12PA12/USART1_RTS/CAN_TX/TIM1_ETR/USBDPI/O FT 220-400 Degrees Pin 46PA13JTMS/SWDIO/PA13I/O FT 220-300 Degrees Pin 47VSS_2VSS_2Power -220-200 Degrees Pin 48VDD_2VDD_2Power -220-100 Degrees Pin 49PA14JTCK/SWCLK/PA14I/O FT 220100 Degrees Pin 50PA15JTDI/TIM2_CH1_ETR/PA15/SPI1_NSSI/O FT 220200 Degrees Pin 51PC10PC10I/O FT 220300 Degrees Pin 52PC11PC11I/O FT 220400 Degrees Pin 53PC12PC12I/O FT 220500 Degrees Pin 54PD2PD2/TIM3_ETRI/O FT 220600 Degrees Pin 55PB3JTDO/TIM2_CH2/PB3/TRACESWO I/O FT 220700 Degrees Pin 56PB4NJTRST/TIM3_CH1/PB4/SPI1_MISO I/O FT 220800 Degrees Pin 57PB5PB5/I2C1_SMBA/TIM3_CH2/SPI1_MOSII/O -220900 Degrees Pin 58PB6PB6/I2C1_SCL/USART1_TX I/O FT 2201000 Degrees Pin 59PB7PB7/I2C1_SDA/USART1_RXI/O FT 2201100 Degrees Pin 60BOOT0BOOT0Input -2201200 Degrees Pin 61PB8PB8/I2C1_SCL/CAN_RX I/O FT 2201300 Degrees Pin 62PB9PB9/I2C1_SDA /CAN_TXI/O FT 2201400 Degrees Pin 63VSS_3VSS_3Power -2201500 Degrees Pin64VDD_3VDD_3Power-2201600 Degrees(1)<Name> 表示引脚默认功能定义名称,<Full Name> 表示引脚全功能定义名称,包括引脚默认复用功能定义和重映射复用功能定义;(2)<I/O Level> 栏中:FT = 可以耐受 5V 电压;5V 电压波纹比较大时,请慎用,具体参数参考数据手册;(3)引脚功能定义参考 2015年6月 STM32F103x4/x6英文数据手册第7版(DocID15060 Rev 7);(4)此引脚功能定义表格旨在用于Altium Designer 原理图库制作的多管脚元件快速画法 Smart Grid Insert ,方法在我的文库中。
stm32引脚分配原则
STM32的引脚分配原则主要包括以下几点:
1. 功能优先:根据实际需求,将引脚分配给需要实现的主要功能。
例如,如果需要使用ADC(模数转换器)功能,那么应该将相应的引脚分配给ADC模块。
2. 互斥原则:有些功能不能或不应该同时使用某些引脚。
例如,PWM(脉冲宽度调制)和UART(通用异步收发器)通常不能使用相同的引脚,因为它们的工作原理和信号特征不同。
3. 复用原则:STM32的许多引脚都可以被配置为多种功能。
根据实际需求,可以将一个引脚配置为多种功能,以便在需要时切换。
例如,某些引脚可以作为普通的GPIO(通用输入/输出)引脚使用,也可以配置为PWM或UART等其他功能。
4. 扩展性原则:在分配引脚时,应该考虑到未来的扩展和升级。
例如,如果预计将来会添加更多外设或扩展板,那么应该尽量保留一些引脚用于未来的连接。
5. 统一性原则:如果同一功能的多个外设或信号需要使用相同类型的引脚,那么应该尽量将它们分配到相同的引脚上,以便于管理和维护。
6. 避免冲突原则:在分配引脚时,应该避免与其他硬件设备的引脚发生冲突。
例如,如果已经有一个外部设备使用了某个引脚,那么应该避免将该引脚分配给STM32的其他功能。
总之,在STM32的引脚分配中,应该根据实际需求和硬件条件
综合考虑以上原则,以确保系统的稳定性和可维护性。
stm32的TIM2的端口使用组合有下面四种:1.当不重映射时,默认TIM2四个的IO口是PA0、PA1、PA2、PA32.要使用PA15、PB3、PA2、PA3的端口组合,要调用下面的语句进行部分重映射:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必须要开AFIO时钟GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);3.要使用PA0、PA1、PB10、PB11的端口组合,要调用下面的语句进行部分重映射:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必须要开AFIO时钟GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2, ENABLE);4.要使用PA15、PB3、PB10、PB11的端口组合,要调用下面的语句进行完全重映射:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必须要开AFIO时钟GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);同时还要禁用JTAG功能,PA15、PB3、PB10、PB11才会正常输出。
GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);/**********************1.执行端口重映射时,复用功能时钟得使能:RCC_APB2Periph_AFIO2. 1. GPIO_Remap_SWJ_Disable: !< Full SWJ Disabled (JTAG-DP + SW-DP)此时PA13|PA14|PA15|PB3|PB4都可作为普通IO用了为了保存某些调试端口,GPIO_Remap_SWJ_Disable也可选择为下面两种模式:2. GPIO_Remap_SWJ_JTAGDisable: !< JTAG-DP Disabled and SW-DP Enabled此时PA15|PB3|PB4可作为普通IO用了3. GPIO_Remap_SWJ_NoJTRST: !< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST此时只有PB4可作为普通IO用了**********************/GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); //使能禁止JTAGGPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); //JATG-DP禁用,但是SW-DP可使用//初始化GPIOB 推挽输出GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_3|GPIO_Pin_4);GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_3|GPIO_Pin_4);//初始化GPIOA 推挽输出GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA, GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);。
stm32 怎样释放pa15,pb3,pb4 作为gpio 口使用
当STM32 引脚不够用时,可以分配JTAG/SWD 的引脚作为GPIO 口使用。
查看数据手册的引脚定义可以看到,PA15 引脚复位后的主要功能为JTDI,PB3 为JTDO,PB4 为JNTRST,如果把这些引脚作为普通引脚使用时,需要进行重映射。
通过设置复用重映射和调试I/O 配置寄存器(AFIO_MAPR)
的SWJ_CFG[2:0]位,配置为启用SW-DP,关闭JTAG-DP 来释放PA15(JTDI), PB3(JTDO), PB4(NJTRST)引脚。
详见中文参考手册V10.2 版本p118 表35 调试端口映像。
库文件中几个相关的宏定义分别为:
#defineGPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100) /*!相关代码:DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5); // 不分配跟踪引脚,释
放PB3RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); // 使能复用时钟和引脚GPIO 时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); // 切换到SWJ 调试,释放PA15,PB4, PB3tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
STM32F103R4T6STM32F103R6T6引脚功能定义引脚功能定义如下:1.PA0-接口功能:ADC1_IN0,复用功能:TIM2_CH1,I2C1_SCL,USART2_CTS2.PA1-接口功能:ADC1_IN1,复用功能:TIM2_CH2,I2C1_SDA,USART2_RTS3.PA2-接口功能:ADC1_IN2,复用功能:TIM2_CH3,USART2_TX4.PA3-接口功能:ADC1_IN3,复用功能:TIM2_CH4,USART2_RX5.PA4-接口功能:SPI1_NSS,复用功能:DAC_OUT1,USART2_CK6.PA5-接口功能:SPI1_SCK,复用功能:TIM2_CH1,USART2_CTS7.PA6-接口功能:SPI1_MISO,复用功能:TIM3_CH1,USART2_RTS8.PA7-接口功能:SPI1_MOSI,复用功能:TIM3_CH2,USART2_TX9.PA8-接口功能:TIM1_CH1,复用功能:USART1_CK10.PA9-接口功能:TIM1_CH2,复用功能:USART1_TX11.PA10-接口功能:TIM1_CH3,复用功能:USART1_RX12.PA11-接口功能:TIM1_CH4,复用功能:USART1_CTS13.PA12-接口功能:TIM1_ETR,复用功能:USART1_RTS14.PA13-接口功能:JTMS/SWDAT,复用功能:SYS_JTMS-SWDAT15.PA14-接口功能:JTCK/SWCLK,复用功能:SYS_JCK-SWCLK16.PA15-接口功能:JTDI,复用功能:SYS_JTDI17.PB0-接口功能:ADC1_IN8,复用功能:TIM3_CH3,I2C1_SCL18.PB1-接口功能:ADC1_IN9,复用功能:TIM3_CH4,I2C1_SDA,USART3_RX19.PB2-接口功能:BOOT1,复用功能:TIM1_CH3N,TIM8_CH2N,I2C1_SMBA20.PB3-接口功能:JTDO/TRACESW0,复用功能:SPI1_SCK,TIM2_CH221.PB4-接口功能:NJTRST,复用功能:SPI1_MISO,TIM3_CH122.PB5-接口功能:I2C1_SMBA,复用功能:SPI1_MOSI,TIM3_CH223.PB6-接口功能:TIM4_CH1,复用功能:I2C1_SCL,USART1_TX24.PB7-接口功能:TIM4_CH2,复用功能:I2C1_SDA,USART1_RX25.PB8-接口功能:TIM4_CH3,复用功能:I2C1_SCL,USART3_TX26.PB9-接口功能:TIM4_CH4,复用功能:I2C1_SDA,USART3_RX以上是STM32F103R4T6和STM32F103R6T6的引脚功能定义。
STM32学习笔记——之USART2篇USART2位于APB1总线学习环境:STM32芯片:STM32F103VBT6开发板:万利STM3210B-LK1USART2引脚PD5——USART2 TX,PD6——USART2 RX (重定义引脚)1、USART2与PC通信(USART2发送)首先需要对USART2配置,因为在万利板子上的USART2进行了重映射,因此配置跟USART1有区别①开启GPIOD以及AFIO时钟,开启USART2时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); //USART2在APB1总线②配置USART2的TX(PD5)以及RX(PD6)引脚先进行定义结构体变量,用来配置相应引脚的速度以及输入输出模式GPIO_InitTypeDef GPIO_InitStructure;进行USART2的重映射配置GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); //USART2重映射配置USART2的RX(PD6)引脚GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入GPIO_Init(GPIOD, &GPIO_InitStructure);配置USART2的TX(PD5)引脚GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出GPIO_Init(GPIOD, &GPIO_InitStructure);③配置USART1的波特率、数据位数、停止位、校验以及硬件流控制首先定义结构体变量USART_InitTypeDef USART_InitStructure;USART_ART_BaudRate = 9600; //波特率--9600USART_ART_WordLength = USART_WordLength_8b; //数据位数--8位USART_ART_StopBits = USART_StopBits_1; //停止位—1位USART_ART_Parity = USART_Parity_No; //无校验USART_ART_HardwareFlowControl = USART_HardwareFlowControl_None; //无硬件流控制USART_ART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1, &USART_InitStructure);④使能USART1USART_Cmd(USART1, ENABLE);通过上面四个步骤的操作,即可完成对USART2的配置。
STM32F103RCT6引脚功能及使用脚号引脚名称主功能默认复用重定义备注1VBAT VBAT----说明1 2PC13-TAMPER-RTC PC13TAMPER-RTC--说明3 3PC14-OSC32_IN PC14OSC32_IN--说明3 4PC15-OSC32_OUT PC15OSC32_OUT--说明3 5OSC_IN OSC_IN--CAN_RX晶振6OSC_OUT OSC_OUT--CAN_TX晶振7NRST NRST----复位8PC0PC0ADC123_IN10--ADC 9PC1PC1ADC123_IN11--ADC 10PC2PC2ADC123_IN12--ADC 11PC3PC3ADC123_IN13--ADC 12VSSA VSSA----模拟地13VDDA VDDA----模拟电14PA0-WKUP PA0WKUP--说明4 USART2_CTS说明5 ADC123_IN0TIM2_CH1_ETR说明6 TIM5_CH1TIM8_ETR15PA1PA1USART2_RTS--ADC123_IN1TIM2_CH2TIM5_CH216PA2PA2USART2_TX--ADC123_IN2TIM2_CH3TIM5_CH317PA3PA3USART2_RX--ADC123_IN3TIM2_CH4TIM5_CH418VSS_4VSS_4----数字地19VDD_4VDD_4----数字电20PA4PA4USART2_CK--ADC12_IN4SPI1_NSSDAC_OUT121PA5PA5ADC12_IN5--SPI1_SCKDAC_OUT222PA6PA6ADC12_IN6TIM1_BKIN TIM3_CH1TIM8_BKINSPI1_MISO23PA7PA7ADC12_IN7TIM1_CH1N TIM3_CH2TIM8_CH1NSPI1_MOSI24PC4PC4ADC12_IN14--25PC5PC5ADC12_IN15--26PB0PB0ADC12_IN8TIM1_CH2N TIM3_CH3TIM8_CH2N27PB1PB1ADC12_IN9TIM1_CH3N TIM3_CH4TIM8_CH3N28PB2PB2----BOOT129PB10PB10USART3_TXTIM2_CH3 I2C2_SCL30PB11PB11USART3_RXTIM2_CH4 I2C2_SDA31VSS_1VSS_1----数字地32VDD_1VDD_1----数字电33PB12PB12USART3_CK--TIM1_BKINSPI2_NSS说明7 I2C2_SMBAI2S2_WS34PB13PB13USART3_CTS--TIM1_CH1NSPI2_SCKI2S2_CK35PB14PB14USART3_RTS--TIM1_CH2NSPI2_MISO36PB15PB15TIM1_CH3N--SPI2_MOSII2S2_SD37PC6PC6TIM8_CH1TIM3_CH1I2S2_MCKSDIO_D6说明838PC7PC7TIM8_CH2NTIM3_CH2 I2S3_MCKSDIO_D739PC8PC8TIM8_CH3NTIM3_CH3 SDIO_D040PC9PC9TIM8_CH4TIM3_CH4 SDIO_D141PA8PA8USART1_CK--TIM1_CH1MCO42PA9PA9USART1_TX--TIM1_CH243PA10PA10USART1_RX--TIM1_CH344PA11PA11USART1_CTS--TIM1_CH4USBDMCAN_RX45PA12PA12USART1_RTS--TIM1_ETRUSBDPCAN_TX46PA13JTMS--PA13 SWDIO47VSS_2VSS_2----数字地48VDD_2VDD_2----数字电49PA14JTCK--PA14SWCLK50PA15JTDI SPI3_NSS PA15I2S3_WSTIM2_CH1_ETRSPI1_NSS51PC10PC10UART4_TX USART3_TXSDIO_D252PC11PC11UART4_RX USART3_RXSDIO_D353PC12PC12UART5_TX USART3_CKSDIO_CK54PD2PD2UART5_RX--TIM3_ETRSDIO_CMD55PB3JTDO SPI3_SCKPB3TIM2_CH2 I2S3_CKSPI1_SCKTRACESWO56PB4NJTRST SPI3_MISOPB4 TIM3_CH1 SPI1_MISO57PB5PB5SPI3_MOSI TIM3_CH2 I2C1_SMBASPI1_MOSI I2S3_SD58PB6PB6TIM4_CH1USART1_TXI2C1_SCL59PB7PB7TIM4_CH2USART1_RXI2C1_SDA60BOOT0BOOT0----61PB8PB8TIM4_CH3I2C1_SCL SDIO_D4CAN_RX62PB9PB9TIM4_CH4I2C1_SDA SDIO_D5CAN_TX63VSS_3VSS_3----数字地64VDD_3VDD_3--数字电说明:1)VBAT:VBAT给RTC和备份区域供电,目的是在VDD断电时保证相关区域的数据内容有效,一般连接到外部电池。
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系列的开发工具和文档,可以方便地进行开发和调试。
CRL 端口配置低寄存器CRH 端口配置高寄存器IDR 端口输入数据寄存器ODR 端口输出数据寄存器BSRR 端口位设置/复位寄存器BRR 端口位复位寄存器LCKR端口配置锁定寄存器EVCR MAPR I/O EXTICR 事件控制寄存器复用重映射和调试配置寄存器外部中断路线0-15配置寄存器GPIO_DeInit将外设GPIOx寄存器重设为缺省值GPIO_AFIODeInit 将复用功能(重映射事件控制和EXTI设置)重设为缺省值 GPIO_Init 根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器 GPIO_StructInit把GPIO_InitStruct中的每一个参数按缺省值填入 GPIO_ReadInputDataBit 读取指定端口管脚的输入GPIO_ReadInputData GPIO_ReadOutputDataBit GPIO_ReadOutputData GPIO_SetBits GPIO_ResetBits GPIO_WriteBit GPIO_Write GPIO_PinLockConfig GPIO_EventOutputConfig GPIO_EventOutputCmd GPIO_PinRemapConfig读取指定的GPIO端口输入读取指定端口管脚的输出读取指定的GPIO端口输出设置指定的数据端口位清除指定的数据端口位设置或者清除指定的数据端口位向指定GPIO数据端口写入数据锁定GPIO管脚设置寄存器选择GPIO管脚用作事件输出使能或者失能事件输出改变指定管脚的映射GPIO_EXTILineConfig选择GPIO管脚用作外部中断路线函数8 种模式,可以通过编程选择:1. 浮空输入2. 带上拉输入3. 带下拉输入4. 摹拟输入5. 开漏输出——(此模式可实现 hotpower 说的真双向 IO)6. 推挽输出7. 复用功能的推挽输出8. 复用功能的开漏输出模式 7 和模式 8 需根据具体的复用功能决定。
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可以作为通用输入输出端口使用,也可以作为其它模块的复用功能引出脚。
下面这张图是一个内部控制连接的等效示意图,它并不表示真正的内部连接,但可以有效地帮助理解重映射和复用引脚的概念。
图中右边引出的信号,分别连接到了本文第三张图的输入输出模块。