STM32 标准库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别

GPIO_SetBits:

使用例:

cpp 复制代码
GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);

意思是将GPIOA1和GPIOA2设为高电平

cpp 复制代码
GPIO_SetBits(GPIOA, 0x0003);

意思也是将GPIOA1和GPIOA2设为高电平

实际上当选中GPIOA时,它会按位遍历,在哪一位有1说明对应GPIOA的那一位输出高电平

GPIO_ResetBits:

使用例:

cpp 复制代码
GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);

意思是将GPIOA1和GPIOA2设为低电平

cpp 复制代码
GPIO_ResetBits(GPIOA, 0x0003);

意思也是将GPIOA1和GPIOA2设为低电平

实际上当选中GPIOA时,它会按位遍历,在哪一位有1说明对应GPIOA的那一位输出低电平

GPIO_WriteBit:

使用例:

cpp 复制代码
GPIO_WriteBit(GPIOA, GPIO_Pin_1 | GPIO_Pin_2, BIT_SET);

意思是将GPIOA1和GPIOA2设为高电平

cpp 复制代码
GPIO_WriteBit(GPIOA, 0x0003, BIT_SET);

意思也是将GPIOA1和GPIOA2设为高电平

实际上当选中GPIOA时,它会按位遍历,在哪一位有1说明对应GPIOA的那一位输出高电平

对端口位进行写操作,支持BIT_SET/BIT_RESET,写高电平或写低电平,可以选同端口多位

相当于第一二个函数的结合体

当然用第一二个函数也可以实现相同功能

比如:

cpp 复制代码
GPIO_SetBits(GPIOA, ~0x0003);
cpp 复制代码
GPIO_ResetBits(GPIOA, 0x0003);

这两个其实是等效的

GPIO_Write:

使用例:

cpp 复制代码
GPIO_Write(GPIOA, 0X0003);

意思是将GPIOA1和GPIOA2设为高电平

等效于:

cpp 复制代码
GPIO_SetBits(GPIOA, 0x0003);
cpp 复制代码
GPIO_ResetBits(GPIOA, ~0x0003);
cpp 复制代码
GPIO_WriteBit(GPIOA, 0x0003, BIT_SET);
相关推荐
MARIN_shen25 分钟前
Marin说PCB之POC电路layout设计仿真案例---06
网络·单片机·嵌入式硬件·硬件工程·pcb工艺
Asa31942 分钟前
STM32-按键扫描配置
stm32·单片机·嵌入式硬件
南城花随雪。1 小时前
单片机:实现驱动超声波(附带源码)
单片机·嵌入式硬件
嵌入式科普1 小时前
十三、从0开始卷出一个新项目之瑞萨RZN2L串口DMA接收不定长
c语言·stm32·瑞萨·e2studio·rzn2l
yutian060610 小时前
Keil MDK下载程序后MCU自动重启设置
单片机·嵌入式硬件·keil
析木不会编程12 小时前
【小白51单片机专用教程】protues仿真独立按键控制LED
单片机·嵌入式硬件·51单片机
枯无穷肉16 小时前
stm32制作CAN适配器4--WinUsb的使用
stm32·单片机·嵌入式硬件
不过四级不改名67717 小时前
基于HAL库的stm32的can收发实验
stm32·单片机·嵌入式硬件
嵌入式科普17 小时前
十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长
c语言·stm32·cubeide·e2studio·ra6m5·dma接收不定长
嵌入式大圣17 小时前
单片机UDP数据透传
单片机·嵌入式硬件·udp