一、GPIO的两大功能
通用输入输出端口GPIO具有两大功能,一种是作为一个可控的端口引脚,另外一种是通过端口映射功能连接到芯片外设。最为常用的功能是,可以作为一个可控的端口引脚,配置该引脚为输入或者输出。输出功能包括强推挽输出和开漏输出两项,当配置为强推挽输出时,用户可以对该引脚任何时刻的电平状态进行定义,高电平或者低电平,当配置为开漏输出时,此时需要外接上拉电阻才能输出高电平信号。
图为:标准 I/O 端口位的基本结构
二、使用示例
1、输出示例:
配置为推挽输出(在定义电平高低前应先进行配置初始化成功,可以用示波器看初始是否是设置的高电平或低电平)
gpio_mode_set (GPIOF, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN 6);
gpio_output_options_set (GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_50MHz, GPIO_PIN_6);
GPIO_BC (GPIOF) = GPIO_PIN_6://输出初始化设置为0
//GPIO_BOP (GPIOF) = GPIO_PIN_6://输出初始化设置为1
可以对电平状态进行设置;
gpio_bit_reset(GPIOC, GPIO_PIN_6);
gpio_bit_set(GPIOC, GPIO_PIN_6);
2、输入示例:
输入功能可以对任意时刻引脚电平状态进行查看,其中输入功能包括输入上拉、输入下拉、高阻态三种,输入上拉和输入下拉分别设定输入引脚处于高电平和低电平状态,而设置成高阻态模式时,输入引脚电平不稳定。 在输入模式下(复位后默认),输出驱动器关闭(高阻抗)。 端口引脚上的实际电压电平通过施密特触发器转换为逻辑 0 或 1,并可通过只读寄存器 Pn_IN 读取。 输入信号直接连接到外围单元的各种输入 (AltDataIn)。 从引脚到输入寄存器 Pn_IN 和AltDataIn 的输入线的功能与端口引脚是作为输入还是作为输出运行无关。 这意味着当端口处于输出模式时,引脚的电平可以由软件通过 Pn_IN 读取,或者外设可以使用引脚电平作为输入。
示例:一般输入及模拟输入配置
gpio_mode_set (GPIOF, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN 6);
unsigned char MODE Status (void)
{
unsigned char status ;
ostatus = (unsigned char) ((GPIO_ISTAT (GPIOC) >>6)&0x00000001);1/GPIO PIN6
}//检测端口的状态
gpio_mode_set (GPIOF, GPIO_MOD_ANALOG, GPIO_PUPD_NONE, GPIO_PIN 6);//模拟输入
参考及阅读文章:
电子技术(八)——GPIO
硬件工程师必看:GPIO用法大汇总
STM32的GPIO功能框图讲解