GPIO描述及应用

文章目录[隐藏]

GPIO是什么

GPIO(general porpose intput output):通用输入输出端口的简称。功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO),如当clk generator, chip select等。

解析

需要使用GPIO先要对其进行初始化
下面展示 GPIO初始化结构体。

typedef struct
{
  uint16_t GPIO_Pin;             /*!< Specifies the GPIO pins to be configured.
                                      This parameter can be any value of @ref GPIO_pins_define */

  GPIOSpeed_TypeDef GPIO_Speed;  /*!< Specifies the speed for the selected pins.
                                      This parameter can be a value of @ref GPIOSpeed_TypeDef */

  GPIOMode_TypeDef GPIO_Mode;    /*!< Specifies the operating mode for the selected pins.
                                      This parameter can be a value of @ref GPIOMode_TypeDef */
}GPIO_InitTypeDef;

GPIO_Pin:选择IO口
GPIO_Speed:在输出模式下,配置输出驱动电路的驱动速度(在输入模式下配置速度无意义),芯片内部在输出部分有不同速度的驱动电路,以此适应不同场景对速度和功耗的需求。对于速度的选择应当合适,在低频场景时使用较高速度会增加功耗和干扰。

typedef enum
{ 
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;

GPIO_Mode:共有八种模式
1.GPIO_Mode_AIN:模拟输入,用于ADC采样。
2.GPIO_Mode_IN_FLOATING :浮空输入用于串口RX
3.GPIO_Mode_IPD :下拉输入
4.GPIO_Mode_IPU :上拉输入
在这里插入图片描述

5.GPIO_Mode_Out_OD :开漏输出
6.GPIO_Mode_Out_PP :推挽输出
7.GPIO_Mode_AF_OD :复用开漏输出
8.GPIO_Mode_AF_PP :复用推挽输出
开漏输出需要外接上拉电阻。

typedef enum
{ GPIO_Mode_AIN = 0x0,
  GPIO_Mode_IN_FLOATING = 0x04,
  GPIO_Mode_IPD = 0x28,
  GPIO_Mode_IPU = 0x48,
  GPIO_Mode_Out_OD = 0x14,
  GPIO_Mode_Out_PP = 0x10,
  GPIO_Mode_AF_OD = 0x1C,
  GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;

程序实现

实现控制led灯亮灭

void LED_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//时钟使能
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
}
void LED_Control(u16,int state)
{
	if(state == 1{
		GPIO_SetBits(GPIOA,GPIO_Pin_1);
	}
	else
	{
		GPIO_ResetBits(GPIOA,GPIO_Pin_1);
	}
}	

版权声明:本文为CSDN博主「nkl118」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nkl118/article/details/121912120

生成海报
点赞 0

nkl118

我还没有学会写个人说明!

暂无评论

相关推荐

STM32CubeMx hal 驱动sg90舵机

一、舵机的控制原理 舵机通过接收PWM信号,使其进入内部电路产生一个偏置电压,触发电机通过减速齿轮带动电位器移动,使电压差为零时,电机停转,从而达到伺服的效果。即给舵机一个

X-bot

X-bot 前言 这个项目是我在稚辉君的视频里面看见的,是一个完全开源的项目,而且对他来说是一个比较简单的项目,但对于我这种没有什么DIY经验的同学来说,还是有点难的,不过

STM32F1xx HAL库 中文详解 之 ADC篇

本文主要从ADC中用到的结构体、函数以及用法讲解。 目录 一、结构体 1.ADC_InitTypeDef 2.ADC_ChannelConfTypeDef 3.ADC_AnalogWDGConfTypeDef 4.ADC_Handl