//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); //初始化
}