KUDO_WYF 2023-06-11 20:55 采纳率: 83.3%
浏览 27
已结题

Arduino关于批量定义GPIO的问题

刚开始学Arduino单片机,就很想知道Arduino能不能和51一样批量定义GPIO。
比如说我需要8个GPIO,把他们一次性定义出来,有没有一种可能把他们的状态存在一个变量里(比如说10100011分别对应这8个引脚的状态,可以一次性读取,也可以一次性写入而不是用for循环,同时可以按位进行与或非的操作)

  • 写回答

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;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月14日
  • 已采纳回答 6月14日
  • 创建了问题 6月11日