STM32四:GPIO
一.概述
1.GPIO基本概念
- 通用输入输出端口(general purpose intput output),可以做输入也可以做输出,可通过程序配置成输入或者输出。
- GPIO具有八种工作模式,四种输入和四种输出
- 四种输入模式:浮空输入,上拉输入,下拉输入,模拟输入
- 四种输出模式:开漏输出,推挽输出,开漏复用输出,推挽复用输出
2.GPIO基本结构
3.八种模式概述
二.八种模式详解
1.浮空输入
2.上拉输入
3.下拉输入
4.模拟输入
5.开漏输出
6.开漏复用输出
7.推挽输出
8.推挽复用输出
三.相关寄存器
1.介绍
- stm32f1系列中以16个IO为一组通过7个寄存器控制
- 复用功能寄存器
(1)7个寄存器
(2)复用寄存器
2.寄存器地址映射
四.程序
1.点亮LED灯
1 void LED_Init(void){ //LED灯的接口初始化 2 GPIO_InitTypeDef GPIO_InitStructure; // GPIO初始化结构体 3 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE); //使能APB2总线的GPIO ABC 4 GPIO_InitStructure.GPIO_Pin = LED1 | LED2; //选择端口号(0~15或all) 5 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式 6 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz) 7 GPIO_Init(LEDPORT, &GPIO_InitStructure); 8 } 9 10 /********************************************************************************************* 11 * 杜洋工作室 www.DoYoung.net 12 * 洋桃电子 www.DoYoung.net/YT 13 *********************************************************************************************/ 14 15 16 /* 17 选择IO接口工作方式: 18 GPIO_Mode_AIN 模拟输入 19 GPIO_Mode_IN_FLOATING 浮空输入 20 GPIO_Mode_IPD 下拉输入 21 GPIO_Mode_IPU 上拉输入 22 GPIO_Mode_Out_PP 推挽输出 23 GPIO_Mode_Out_OD 开漏输出 24 GPIO_Mode_AF_PP 复用推挽输出 25 GPIO_Mode_AF_OD 复用开漏输出 26 */
1 int main (void){//主程序 2 RCC_Configuration(); //时钟设置 3 LED_Init(); 4 while(1){ 5 6 //方法1: 7 GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1 8 delay_us(50000); //延时1秒 9 GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0 10 delay_us(50000); //延时1秒 11 12 //方法2: 13 // GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1))); //取反LED1 14 // delay_ms(500); //延时1秒 15 16 //方法3: 17 // GPIO_SetBits(LEDPORT,LED1); //LED灯都为高电平(1) 18 // delay_s(1); //延时1秒 19 // GPIO_ResetBits(LEDPORT,LED1); //LED灯都为低电平(0) 20 // delay_s(1); //延时1秒 21 22 //方法4 23 // GPIO_Write(LEDPORT,0x0001); //直接数值操作将变量值写入LED 24 // delay_s(2); //延时1秒 25 // GPIO_Write(LEDPORT,0x0000); //直接数值操作将变量值写入LED 26 // delay_s(2); //延时1秒 27 28 } 29 }