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);
相关推荐
广药门徒1 小时前
定时器时钟来源可以从输入捕获引脚输入
单片机·嵌入式硬件
爱睡觉的王宇昊5 小时前
二、【ESP32开发全栈指南:ESP32 GPIO深度使用】
单片机·嵌入式硬件
学生哥-_-11 小时前
STM32通过KEIL pack包轻松移植LVGL,并学会使用GUI guider
stm32·lvgl·tftlcd·gui guider·gt911
三三十二11 小时前
STM32实战:数字音频播放器开发指南
stm32·单片机·嵌入式硬件
想搞嵌入式的小白13 小时前
STM32外设问题总结
单片机·嵌入式硬件
让子弹飞0213 小时前
35.成功解决编写关于“江协科技”编写技巧第二期标志位积累的问题
stm32·按键
木子单片机14 小时前
基于STM32语音识别柔光台灯
stm32·单片机·嵌入式硬件·proteus·语音识别·keil
广药门徒15 小时前
澄清 STM32 NVIC 中断优先级
单片机·嵌入式硬件
小禾苗_16 小时前
32单片机——窗口看门狗
单片机·嵌入式硬件
小灰灰搞电子16 小时前
单片机0-10V电压输出电路分享
单片机·嵌入式硬件