1、GPIO初始化
#include "bsp_gpio.h"
/*
GPIO_Mode_IN = 0x00,
GPIO_Mode_OUT = 0x01,
GPIO_Mode_AF = 0x02,
GPIO_Mode_AN = 0x03
*/
/*
GPIO_OType_PP = 0x00,
GPIO_OType_OD = 0x01
*/
/*
GPIO_PuPd_NOPULL = 0x00,
GPIO_PuPd_UP = 0x01,
GPIO_PuPd_DOWN = 0x02
*/
/*
GPIO_Low_Speed = 0x00,
GPIO_Medium_Speed = 0x01,
GPIO_Fast_Speed = 0x02,
GPIO_High_Speed
*/
void GPIO_OUT_INIT()
{
//打开时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);
//初始化IO口
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType= GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed= GPIO_Medium_Speed;
GPIO_Init(GPIOC,&GPIO_InitStruct);
}
}
void GPIO_IN_INIT()
{
//打开时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
//初始化IO口
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
// GPIO_InitStruct.GPIO_OType= GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
// GPIO_InitStruct.GPIO_Speed= GPIO_Medium_Speed;
GPIO_Init(GPIOB,&GPIO_InitStruct);
}
}
2、函数相关功能
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
例:i = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2);
读取PB2的数据
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
例:i = i = GPIO_ReadInputData(GPIOB);
读取PB的数据
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
例:GPIO_SetBits(GPIOC,GPIO_Pin_13);
将PC13设置为高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
例:GPIO_ResetBits(GPIOC,GPIO_Pin_13);
将PC13设置为低电平
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
例:GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);
将PC13设置为高电平
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
例:GPIO_Write(GPIOC, 0X0055);
将PC口输出设为0x0055;
void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
例:GPIO_ToggleBits(GPIOC,GPIO_Pin_13);
将PC13电平翻转