1、什么是GPIO口?
GPIO口:简单而言,就是芯片用来控制或者采集外部器件的相关信息,这个又可以称之为输入输出的端口。
2、GPIO有什么作用?
是芯片用来感知外部世界并且用来控制外部世界媒介。
3、stm32的GPIO口
在我们的stm32中,GPIO口一共有114个,而且这114个GPIO口以分组的形式存在,

如上,我们由这个芯片内部结构框架这个图(STM32F407xx),我们可以知道GPIO口,会按照分组的形式存在。
如上,分别可以从GPIOA到GPIOI口,但是上述的结构框架图是F407系列的,现在记笔记的芯片为STM32F407ZGTx芯片,所以上述的分组没有那么多,只含有分配到从GPIOA--GPIOG一共7组,每一组16个IO口,可以如上结构框架图可以知道从0口--15口,一共十六个,所以一共总得GPIO口一共是112个。

还有两个分别是,我们可以从电路图可以找到,因为这两个IO口比较特殊,不用我们直接操作的,所以可以不算到结构图当中来,我们可以了解一下,分别如下:

另一个也是在CPU右边,这个IO口是电池管理。

扩展比较一下,相比于STM32,我们的51单片机的IO口也是按照分组的形式存在的,分别从P0-P3组,而且每一组IO口都有8个口,分别由P0.0-P0.7.


不像51一样,51的IO口比较如下:

如上圈起来的解释,51单片机这个P3只有P3.0和RxD这两个功能,所以我们的STM32的GPIO口用起来更加的灵活。
二者的异同
二者相同的地方:变量和寄存器一样都是向内存申请了存储的空间,可以存储数据,并且还有相应的地址;
二者存在差异的地方:变量的地址是随时变化的
,但是寄存器的地址是不变的,简单说,寄存器的地址已经被我们的芯片给固定好了。
例如:

变量我们用一个个小的(右下角)方框表示,让后这个变量是可以改变的,可以进行左移右移等操作,但是我们的寄存器,寄存器相当于变量,变量就会有变量名,变量名就有地址,只不过我们的寄存器的地址是固定的(如上我们设置成0x32),所以0x32就是我们寄存器的名字。
总结:学习STM32前都要先了解掌握其GPIO的相关知识,只有了解到了GPIO的配置知识才能算是入门!