特殊引脚与普通引脚
特殊引脚
特殊功能引脚:"迫于生活压力"被特化的引脚,即为了满足芯片运行的基本条件。
以STM32F103C8T6型号为例,其特殊功能引脚(11个) | (Vdd+Vss)*3 | 多组供电接口 |
VDDA+VSSA(A表示Analog,模拟的) | 给芯片内部模拟模块供电 | |
BOOT0 | 启动模式选择引脚 | |
NRST | 复位,低电平有效 | |
VBAT(Battery-备用电池) |
普通引脚
普通IO引脚:未被特化,可编程,真正的可用之才。
同样以STM32F103C8T6为例,其共48个引脚,除去11个特殊功能引脚后,还剩37个普通IO引脚。
普通IO引脚的命名规则
"字母+数字"的命名方式
1、首先对IO分组,尽量每16个引脚分一组,使用字母表示组编号,比如:GPIOA、GPIOB、GPIOC、...、GPIOG
2、组的内部使用数字编号,如每组16个引脚,则编号是从0~15,比如GPIOA的第一个引脚叫PA0
3、芯片上的引脚,其编号不一定是连续的
对于STM32F103C8T6,其普通IO引脚名称分别为:
PA0~PA15 | 16个 |
PB0~PB15 | 16个 |
PC13、14、15 | 3个 |
PD0、PD1 | 2个 |
IO复用
什么是IO复用
IO复用:指IO引脚身兼数职的现象。对于STM32芯片的一些引脚,其不仅能被GPIO模块直接控制(当做普通IO引脚使用),还能被其他模块使用。
名称 | 通用 | 复用 |
PA9 | 普通IO | USART1_Tx/TIM1_CH3 |
PA10 | 普通IO | USART1_Rx/TIM1_CH4 |
以PA9和PA10为例,除了被GOIO使用,用于输出或检测高低电平外,还可以被串口使用,当做串口的发送引脚或接收引脚来使用;也可以被定时使用,作为定时器的通道3和4来使用。
为什么要复用
从芯片设计人员角度去想,要开发一款芯片,对于此芯片来说,其引脚数量是一定的(例如48个),且希望芯片里面有许多模块。但每个模块几乎都需要占用一些引脚资源(例如ADC模块要占用10个引脚),所有模块所需引脚数量多于给定引脚数量,就需要让同一个引脚去身兼数职。
这样,有限的IO引脚,可以装备更多的功能。
通用功能与复用功能
通用功能(普通IO):通过GPIO模块直接对一组IO口引脚进行读写。
复用功能:IO引脚的控制权交给芯片的其他模块,编程人员对该模块进行编程,从而间接控制IO引脚。(其他模块控制GPIO模块,间接控制IO)
IO重映射
对于同一个引脚,可能有多个复用功能。比如PA9、PA10能被串口和定时器使用,当串口和定时器同时使用时,引脚分配不够,此时通过IO重映射,将串口或定时器(二者中的一个)的复用功能转移到其他IO引脚上。
最小系统板引脚图
同样以PA9、PA10为例,当其被串口和定时器同时使用时,串口的复用功能可转移到PB7或PB6上(重映射),定时器则继续使用PA9、PA10