//file :GPIO.h
#include"stm32f10x.h"
#include"misc.h"
/*
GPIO使用基本步骤
1、开启相对应的GPIO时钟
2、配置引脚模式
3、初始化相对应的引脚
4、通过库函数操作引脚
*/
void Gpio_Output_Set(void); //输出
void Gpio_Input_Set(void); //输入
/*************************常用的GPIO函数***********************************
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//读取输入某个引脚的高低电平
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
//读取整组GPIO的数据
//对引脚进行置高
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//对引脚进行清零
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//对引脚进行置高或者清零操作
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
//对整组IO进行置1 或者清零操作
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
//设置I/O端口与EXTI中断线的映射关系
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
***************************************************************************/
//file :GPIO.c
#include "GPIO.h"
void Gpio_Output_Set(void) //引脚输出设置
{
GPIO_InitTypeDef GPIO_InitStruct; //参数结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOE,ENABLE);
//开启相对应的时钟
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5; //选择相对应的引脚
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz; //输出速率
GPIO_Init(GPIOB, &GPIO_InitStruct); //初始化相对应的引脚
GPIO_Init(GPIOE, &GPIO_InitStruct);
}
void Gpio_Input_Set(void) //引脚输入设置
{
GPIO_InitTypeDef GPIO_InitStruct; //参数结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
//开启相对应的时钟
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4; //引脚
GPIO_Init(GPIOE, &GPIO_InitStruct); //初始化
}