我在做一个开发板,基于stm32f107,io管脚复用的关系搞不清楚,我的目标是尽量把f107的功能同时打开。
一 如下,假如我只是使用了usart2的前4根线,也就是流控串口,那么此时ck信号线还能作为普通gpio用吗?
84
|
PD3
|
I/O
|
FT
|
PD3
|
|
USART2_CTS
|
85
|
PD4
|
I/O
|
FT
|
PD4
|
|
USART2_RTS
|
86
|
PD5
|
I/O
|
FT
|
PD5
|
|
USART2_TX
|
87
|
PD6
|
I/O
|
FT
|
PD6
|
|
USART2_RX
|
88
|
PD7
|
I/O
|
FT
|
PD7
|
|
USART2_CK
|
二 假如我只使用usart3的7816模式,那么此时pd12还能作为tim4_chi1或者gpio用吗?
55
|
PD8
|
I/O
|
FT
|
PD8
|
|
USART3_TX/
ETH_MII_RX_DV/
ETH_RMII_CRS_DV
|
56
|
PD9
|
I/O
|
FT
|
PD9
|
|
USART3_RX/
ETH_MII_RXD0/
ETH_RMII_RXD0
|
57
|
PD10
|
I/O
|
FT
|
PD10
|
|
USART3_CK/
ETH_MII_RXD1/
ETH_RMII_RXD1
|
58
|
PD11
|
I/O
|
FT
|
PD11
|
|
USART3_CTS/
ETH_MII_RXD2
|
59
|
PD12
|
I/O
|
FT
|
PD12
|
|
TIM4_CH1 /
USART3_RTS/
ETH_MII_RXD3
|
60
|
PD13
|
I/O
|
FT
|
PD13
|
|
TIM4_CH2
|
61
|
PD14
|
I/O
|
FT
|
PD14
|
|
TIM4_CH3
|
三 假如我把pc4\pc5作为eth的信号线,那么pc2\pc3还能同时做为adc用吗?
17
|
PC2
|
I/O
|
|
PC2
|
ADC12_IN12/
ETH_MII_TXD2
|
|
18
|
PC3
|
I/O
|
|
PC3
|
ADC12_IN13/
ETH_MII_TX_CLK
|
|
33
|
PC4
|
I/O
|
|
PC4
|
ADC12_IN14/
ETH_MII_RXD0(8)/
ETH_RMII_RXD0
|
|
34
|
PC5
|
I/O
|
|
PC5
|
ADC12_IN15/
ETH_MII_RXD1(8)/
ETH_RMII_RXD1
|
|
四 复用功能是通过一个函数操作的
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,
ENABLE);
比如这里为了把pc11\pc10给uart4使用会使能RCC_APB2Periph_AFIO复用,那么和uart4不相干的pc12此时是只能做为gpio用,
还是只能uart5 tx用?或者用户可以选用?
还有就是启动RCC_APB2Periph_AFIO复用后,但是我没有配置使用uart4,那么pc10\pc11是不是还可以当作gpio用?
78
|
PC10
|
I/O
|
FT
|
PC10
|
UART4_TX
|
USART3_TX/
SPI3_SCK/
I2S3_CK
|
79
|
PC11
|
I/O
|
FT
|
PC11
|
UART4_RX
|
USART3_RX/
SPI3_MISO
|
80
|
PC12
|
I/O
|
FT
|
PC12
|
UART5_TX
|
USART3_CK/
SPI3_MOSI/
I2S3_SD
|
五 usart1 remap之后,tx\rx就跑到pb6和pb7了,假如我只是用到两线串口,那么此时pa11\pa12可以给usb用吗?
Pa8可以作为mco用吗?可以让mco、usb、usart1同时工作吗?
67
|
PA8
|
I/O
|
FT
|
PA8
|
USART1_CK/
OTG_FS_SOF /
TIM1_CH1(8)/
MCO
|
|
68
|
PA9
|
I/O
|
FT
|
PA9
|
USART1_TX(7)/
TIM1_CH2(7)/
OTG_FS_VBUS
|
|
69
|
PA10
|
I/O
|
FT
|
PA10
|
USART1_RX(7)/
TIM1_CH3(7)/
OTG_FS_ID
|
|
70
|
PA11
|
I/O
|
FT
|
PA11
|
USART1_CTS
/
CAN1_RX /
TIM1_CH4(7)/
OTG_FS_DM
|
|
71
|
PA12
|
I/O
|
FT
|
PA12
|
USART1_RTS
/
OTG_FS_DP /
CAN1_TX(7) /
TIM1_ETR(7)
|
|
92
|
PB6
|
I/O
|
FT
|
PB6
|
I2C1_SCL(7)/
TIM4_CH1(7)
|
USART1_TX/
CAN2_TX
|
93
|
PB7
|
I/O
|
FT
|
PB7
|
I2C1_SDA(7)/
TIM4_CH2(7)
|
USART1_RX
|
六 加入remap了spi3,但是不使用spi3 nss的功能(使用其他gpio做软cs),那在使用spi3的时候,pa4还能同时做dac用吗?
29
|
PA4
|
I/O
|
|
PA4
|
SPI1_NSS(7)/
DAC_OUT1 /
USART2_CK(7) /
ADC12_IN4
|
SPI3_NSS/I2S3_WS
|
|
我的疑惑主要是io复用和remap的原则找不到。网上资料也没有清楚的说明。我了解到的是:
每个引脚可能有多个功能,1 默认功能,2 复用功能 3 remap功能
那么使能某组gpio(usart的5根线成1组,spi的4根线成一组)的复用后,还能否可以使用默认功能?
使能某模块的remap后,相关io还可以单独选用默认功能和复用功能吗?
默认、复用、remap这三种功能是互斥的吗?
|