关于GPIO模块的库函数
一、GPIO概述
拿到任意一款单片机,不管简单还是复杂的,最多的端口永远是GPIO端口,我认为这才是单片机的灵魂(不喜勿喷哈哈!),有了GPIO端口,STRM32的GPIO(通用输入输出端口)的学习我认为还是先从中文参考手册学起比较好,不废话直接上才艺---中文参考手册截图GPIO基本结构。
在上边的截图里可以看出,每个GPIO端口都包含了输入和输出两条线。
1、输入控制(上)
当端口为输入时,可配置为上拉、下拉、浮空、模拟输入形式,当端口正常工作后每一个机器周期,端口的状态都会被接入到输入数据寄存器中,方便我们获取到端口当前的数值
2、输出控制(下)
当配置为输出时,通过配置位设置/清除寄存器来间接配置输出数据寄存器进而控制IO端口输出我们期待的数据,此时端口的配置模式可以时推挽输出、开漏输出、复用推挽输出、复用开漏输出;
3、端口配置
此截图出可以看出,配置端口输出不仅需要把对应的位配置好,还应配置好输出模式下的输出速度。
此外,GPIO不仅是对端口的输出高低电平功能,这个只是GPIO的基本功能,还有ADC 、DAC、 定时器 、 USART、 SPI 、I2C CAN 、USB 功能,所以具体的功能还要仔细学习。
二、GPIO寄存器
STM32F103GPIO端口有七个寄存器分别是:
1、GPIO_CRL(端口配置低寄存器)
此寄存器是配置某一组端口(如GPIOA)的低8位寄存器,每一个端口配置对应的是4位
CNF0[1:0] :端口的输入输出模式选择