STM32——如何配置GPIO的led点亮

GPIO_Init();

1、使能GPIO的时钟
2、设置GPIO目标引脚
3、控制GPIO引脚输出高低电平

IO操作重要结构体:GPIO_InitTypeDef

typedef struct
{
    uint32_t Pin;               操作的管脚
	uint32_t Mode;   			模式选择
	uint32_t Pull;     			上拉下拉,或者都不加
	uint32_t Speed;    			速度选择
	uint32_t Alternate; 		管脚复用模式
} GPIO_InitTypeDef;

GPIO的led点亮:

void GPIO_Init(void)
{
   	GPIO_InitTypeDef GPIO_InitStruct;
   	
   	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);	//使能端口时钟

  	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; 				//LED0-->PB.5 端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		//推挽输出
 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 		//IO口速度为50MHz
 	GPIO_Init(GPIOB, &GPIO_InitStructure);					//根据设定参数初始化GPIOB.5
	
 	GPIO_SetBits(GPIOB,GPIO_Pin_5);							//PB.5 输出高
}

int main(void)
{
	GPIO_Init();
	delay_Init();
	GPIO_ReSetBits(GPIOB,GPIO_Pin_5);
	while(1);
}

库函数解析:

1个初始化函数:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

typedef struct
{
     uint16_t GPIO_Pin;                         //指定要初始化的IO口         
    GPIOSpeed_TypeDef GPIO_Speed;				//设置IO口输出速度
    GPIOMode_TypeDef GPIO_Mode;    			  	//设置工作模式:8种中的一个
    }GPIO_InitTypeDef;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; 				//LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 		//IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);					//根据设定参数初始化GPIOB.5

2个读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

2个读取输出电平函数:
uint8_t GPIO_ReadOutputDataBit (GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

4个设置输出电平函数:

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:设置某个IO口输出为高电平(1)。实际操作BSRR寄存器

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:设置某个IO口输出为低电平(0)。实际操作的BRR寄存器。

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
 这两个函数不常用,也是用来设置IO口输出电平。

你可能感兴趣的:(STM32单片机)