编写keil中stm32F103ZE的GPIO.c和GPIO.h文件
时间: 2024-03-26 18:16:32 浏览: 158
GPIO.h:
```c
#ifndef __GPIO_H
#define __GPIO_H
#include "stm32f10x.h"
#define GPIO_LOW 0
#define GPIO_HIGH 1
void GPIO_Init(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, GPIOMode_TypeDef GPIO_Mode);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, uint8_t GPIO_State);
uint8_t GPIO_Read(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin);
#endif /* __GPIO_H */
```
GPIO.c:
```c
#include "GPIO.h"
void GPIO_Init(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, GPIOMode_TypeDef GPIO_Mode)
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOx, &GPIO_InitStruct);
}
void GPIO_Write(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin, uint8_t GPIO_State)
{
if (GPIO_State == GPIO_HIGH)
{
GPIO_SetBits(GPIOx, GPIO_Pin);
}
else
{
GPIO_ResetBits(GPIOx, GPIO_Pin);
}
}
uint8_t GPIO_Read(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin)
{
if (GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == GPIO_HIGH)
{
return GPIO_HIGH;
}
else
{
return GPIO_LOW;
}
}
```
这里的GPIO_Init函数是为了方便对单个引脚进行初始化,可以根据需要修改GPIO_InitStruct的参数进行自定义配置。GPIO_Write和GPIO_Read函数则是对GPIO引脚进行读写操作。
阅读全文