STM8库函数学习笔记之GPIO
相关的函数:
1 void GPIO_DeInit(GPIO_TypeDef* GPIOx);
2 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode);
3 void GPIO_Write(GPIO_TypeDef* GPIOx, u8 PortVal);
4 void GPIO_WriteHigh(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);
5 void GPIO_WriteLow(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);
6 void GPIO_WriteReverse(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);
7 u8 GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
8 u8 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
9 BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin);
10 void GPIO_ExternalPullUpConfig(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, FunctionalState NewState);
//---------------------------------------------------------------------------------------
void GPIO_DeInit(GPIO_TypeDef* GPIOx);
这个函数用来恢复指定端口的寄存器ODR、DDR、CR1及CR2到默认值0x00,即无中断功能的浮动输入,无返回值。
参数:
GPIOx: GPIOA到GPIOI可选。
示例: 恢复GPIOB的相应寄存器为默认值
GPIO_DeInit(GPIOB);
//---------------------------------------------------------------------------------------
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO
_Mode);
这个函数用来配置指定端口的各个引脚功能,无返回值。
参数:
GPIOx: 端口GPIOA到GPIOI可选。
GPIO_Pin: 要初始化的引脚,可以用“或”方式选择多个引脚,
可选值:
GPIO_PIN_0 选择 0 引脚
GPIO_PIN_1 选择 1 引脚
GPIO_PIN_2 选择 2 引脚
GPIO_PIN_3 选择 3 引脚
GPIO_PIN_4 选择 4 引脚
GPIO_PIN_5 选择 5 引脚
GPIO_PIN_6 选择 6 引脚
GPIO_PIN_7 选择 7 引脚
GPIO_PIN_LNIB 低四位引脚选择,即同时选择PIN_0到PIN_3。
GPIO_PIN_HNIB 高四位引脚选择,即同时选择PIN_4到PIN_7。
GPIO_PIN_ALL 选择全部引脚,即同时选择PIN_0到PIN_7。
GPIO_Mode:工作模式。
可选值:
GPIO_MODE_IN_FL_NO_IT 无中断功能的浮动输入。
GPIO_MODE_IN_PU_NO_IT 无中断功能的上拉输入。
GPIO_MODE_IN_FL_IT 带中断功能的浮动输入。
GPIO_MODE_IN_PU_IT 带中断功能的上拉输入。
GPIO_MODE_OUT_OD_LOW_FAST 高速开漏低电平输出,可工作到10MHz。
GPIO_MODE_OUT_PP_LOW_FAST 高速推挽低电平输出,可工作到10MHz。
GPIO_MODE_OUT_OD_LOW_SLOW 低速开漏低电平输出,可工作到2MHz。
GPIO_MODE_OUT_PP_LOW_SLOW 低速推挽低电平输出,可工作到2MHz。
GPIO_MODE_OUT_OD_HIZ_FAST 高速开漏高阻态输出,可工作到10MHz。
GPIO_MODE_OUT_PP_HIGH_FAST 高速推挽高电平输出,可工作到10MHz。
GPIO_MODE_OUT_OD_HIZ_SLOW 低速开漏高阻态输出,可工作到2MHz。
GPIO_MODE_OUT_PP_HIGH_SLOW 低速推挽高电平输出,可工作到2MHz。
示例: 把GPIOB的引脚0、1、4配置为高速推挽高电平输出。
GPIO_Init(GPIOB, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4), GPIO_MODE_OUT_PP_HIGH_FAST);
//---------------------------------------------------------------------------------------
void GPIO_Write(GPIO_TypeDef* GPIOx, u8 PortVal);
这个函数用来输出一个八位的值到指定的端口,无返回值。
所需条件:该端口必须配置为输出模式。
参数:
GPIOx:端口GPIOA到GPIOI可选。
PortVal:为无符号8位数值。
示例: 端口B输出0x22。
GPIO_Write(GPIOB, 0x22);
//---------------------------------------------------------------------------------------
void GPIO_WriteHigh(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);
这个函数用来置位指定端口的一个或多个引脚,即置相应引脚输出为高电平,无返回值。
所需条件:该端口必须配置为输出模式。
参数:
GPIOx:端口GPIOA到GPIOI可选。
PortPins: 要置位引脚,可以用“或”方式选择多个引脚,
可选值:
GPIO_PIN_0 选择 0 引脚
GPIO_PIN_1 选择 1 引脚
GPIO_PIN_2 选择 2 引脚
GPIO_PIN_3 选择 3 引脚
GPIO_PIN_4 选择 4 引脚
GPIO_PIN_5 选择 5 引脚
GPIO_PIN_6 选择 6 引脚
GPIO_PIN_7 选择 7 引脚
GPIO_PIN_LNIB 低四位引脚选择,即同时选择PIN_0到PIN_3。
GPIO_PIN_HNIB 高四位引脚选择,即同时选择PIN_4到PIN_7。
GPIO_PIN_ALL 选择全部引脚,即同时选择PIN_0到PIN_7。
示例: 把GPIOB的引脚0和引脚3置位。
GPIO_WriteHigh(GPIOB, (GPIO_PIN_0 | GPIO_PIN_3));
//---------------------------------------------------------------------------------------
void GPIO_WriteLow(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);
这个函数用来复位指定端口一个或多个引脚的电平,即置相应引脚输出为低电平,无返回值。
所需条件:该端口必须配置为输出模式。
参数:
GPIOx:端口GPIOA到GPIOI可选。
PortPins: 要复位引脚,可以用“或”方式选择多个引脚,
可选值:
GPIO_PIN_0 选择 0 引脚
GPIO_PIN_1 选择 1 引脚
GPIO_PIN_2 选择 2 引脚
GPIO_PIN_3 选择 3 引脚
GPIO_PIN_4 选择 4 引脚
GPIO_PIN_5 选择 5 引脚
GPIO_PIN_6 选择 6 引脚
GPIO_PIN_7 选择 7 引脚
GPIO_PIN_LNIB 低四位引脚选择,即同时选择PIN_0到PIN_3。
GPIO_PIN_HNIB 高四位引脚选择,即同时选择PIN_4到PIN_7。
GPIO_PIN_ALL 选择全部引脚,即同时选择PIN_0到PIN_7。
示例: 把GPIOB的引脚0和引脚3置为低电平。
GPIO_WriteLow(GPIOB, (GPIO_PIN_0 | GPIO_PIN_3));
//---------------------------------------------------------------------------------------
void GPIO_WriteReverse(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);
这个函数用来取反指定端口的一个或多个引脚的电平状态,如果当前该引脚为高电平则置为低电平,如果为低电平则置为高电平,无返回值。
所需条件:该端口必须配置为输出模式。
参数:
GPIOx:端口GPIOA到GPIOI可选。
PortPins: 要取反的引脚,可以用“或”方式选择多个引脚。
可选值:
GPIO_PIN_0 选择 0 引脚
GPIO_PIN_1 选择 1 引脚
GPIO_PIN_2 选择 2 引脚
write的返回值GPIO_PIN_3 选择 3 引脚
GPIO_PIN_4 选择 4 引脚
GPIO_PIN_5 选择 5 引脚
GPIO_PIN_6 选择 6 引脚
GPIO_PIN_7 选择 7 引脚
GPIO_PIN_LNIB 低四位引脚选择,即同时选择PIN_0到PIN_3。
GPIO_PIN_HNIB 高四位引脚选择,即同时选择PIN_4到PIN_7。
GPIO_PIN_ALL 选择全部引脚,即同时选择PIN_0到PIN_7。
示例: 取反GPIOB的引脚0和引脚3的电平状态。
GPIO_WriteReverse(GPIOB, (GPIO_PIN_0 | GPIO_PIN_3));
//---------------------------------------------------------------------------------------
u8 GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
这个函数用来读取指定端口的数据,返回一个八位无符号值。
所需条件:该端口必须配置为输入模式。
参数:
GPIOx:端口GPIOA到GPIOI可选。
示例:读取端口A的数值。
u8 r_data;
r_data = GPIO_ReadInputData(GPIOA);
//---------------------------------------------------------------------------------------
u8 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
这个函数用来读取指定端口的输出寄存器的数据,返回一个八位无符号值。
参数:
GPIOx:端口GPIOA到GPIOI可选。
示例:读取端口A的输出寄存器的数值。
u8 r_data;
r_data = GPIO_ReadOutputData(GPIOA);
//---------------------------------------------------------------------------------------
BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin);
这个函数用来读取指定端口一个或多个引脚状态,任意一个引脚为高电平侧返回SET,否则返回RESET。
所需条件:该端口必须配置为输入模式。
参数:
GPIOx:端口GPIOA到GPIOI可选。
GPIO_Pin: 要读取状态的引脚,可以用“或”方式选择多个引脚,
可选值:
GPIO_PIN_0 选择 0 引脚
GPIO_PIN_1 选择 1 引脚
GPIO_PIN_2 选择 2 引脚
GPIO_PIN_3 选择 3 引脚
GPIO_PIN_4 选择 4 引脚
GPIO_PIN_5 选择 5 引脚
GPIO_PIN_6 选择 6 引脚
GPIO_PIN_7 选择 7 引脚
GPIO_PIN_LNIB 低四位引脚选择,即同时选择PIN_0到PIN_3。
GPIO_PIN_HNIB 高四位引脚选择,即同时选择PIN_4到PIN_7。
GPIO_PIN_ALL 选择全部引脚,即同时选择PIN_0到PIN_7。
示例: 读取GPIOB引脚1的电平状态。
GPIO_ReadInputPin(GPIOB, GPIO_PIN_1);
/
/---------------------------------------------------------------------------------------
void GPIO_ExternalPullUpConfig(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, FunctionalState NewState);  这个函数用来使能或禁止指定端口某一个或多个引脚的内部上拉电阻,无返回值。
参数:
GPIOx:端口GPIOA到GPIOI可选。