arduino / arduino/ArduinoCore-API

Retrieve current pin mode

未关闭
#179 4 条评论 13 个 reaction 已指派 0 人 在 GitHub 查看
enhancement
主要语言
C++
星标
306
派生
150
PR 合并指标
30 天内没有已合并 PR

描述

There is currently no function to get the current pin mode. A possible implementation is:

```
int pinMode(uint8_t pin)
{
if (pin >= NUM_DIGITAL_PINS) return (-1);

uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *reg = portModeRegister(port);
if (*reg & bit) return (OUTPUT);

volatile uint8_t *out = portOutputRegister(port);
return ((*out & bit) ? INPUT_PULLUP : INPUT);
}
```

The return value is the pin mode or error code (-1) for illegal pin number.

Cheers!

贡献指南

这个仓库没有索引到贡献指南

调研方向

从现有的 pinMode API 以及 issue 中所示的 digitalPinToBitMask、digitalPinToPort、portModeRegister 和 portOutputRegister 入口点开始。检查硬件无关 API 如何提供引脚操作,以及各个 core 如何实现这些操作。当可以获取当前引脚模式、返回指定的模式,并且对于无效引脚返回 -1 时,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
arduino, cpp
领域
api, embedded-iot
Issue 类型
功能
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。