刚开始学Arduino单片机,就很想知道Arduino能不能和51一样批量定义GPIO。
比如说我需要8个GPIO,把他们一次性定义出来,有没有一种可能把他们的状态存在一个变量里(比如说10100011分别对应这8个引脚的状态,可以一次性读取,也可以一次性写入而不是用for循环,同时可以按位进行与或非的操作)
Arduino关于批量定义GPIO的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
卑微的Coder 2023-06-11 23:15关注在Arduino中,可以使用宏定义或结构体来批量定义GPIO。例如,可以使用以下宏定义来定义8个GPIO引脚:
#define PIN_1 2 #define PIN_2 3 #define PIN_3 4 #define PIN_4 5 #define PIN_5 6 #define PIN_6 7 #define PIN_7 8 #define PIN_8 9
然后,可以使用以下结构体来存储这些GPIO引脚的状态:
typedef struct { uint8_t pin1 : 1; uint8_t pin2 : 1; uint8_t pin3 : 1; uint8_t pin4 : 1; uint8_t pin5 : 1; uint8_t pin6 : 1; uint8_t pin7 : 1; uint8_t pin8 : 1; } gpio_t;
然后,可以使用以下代码来读取或写入这些GPIO引脚的状态:
gpio_t gpio;
// 读取GPIO状态 uint8_t state = ((uint8_t)(&gpio));
// 写入GPIO状态 ((uint8_t)(&gpio)) = state;
// 按位与操作 gpio.pin1 &= 0x01;
// 按位或操作 gpio.pin2 |= 0x01;
// 按位非操作 gpio.pin3 = ~gpio.pin3;
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报