mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
GPIO16 support for pinMode, digitalRead, and digitalWrite
This commit is contained in:
parent
07432e5aa8
commit
e40d18e107
@ -27,6 +27,8 @@
|
|||||||
#include "gpio.h"
|
#include "gpio.h"
|
||||||
#include "ets_sys.h"
|
#include "ets_sys.h"
|
||||||
|
|
||||||
|
#define MODIFY_PERI_REG(reg, mask, val) WRITE_PERI_REG(reg, (READ_PERI_REG(reg) & (~mask)) | (uint32_t) val)
|
||||||
|
|
||||||
#define PINCOUNT 16
|
#define PINCOUNT 16
|
||||||
|
|
||||||
static const uint32_t g_pin_muxes[PINCOUNT] = {
|
static const uint32_t g_pin_muxes[PINCOUNT] = {
|
||||||
@ -73,6 +75,16 @@ static uint32_t g_gpio_function[PINCOUNT] = {
|
|||||||
|
|
||||||
void pinMode(uint8_t pin, uint8_t mode)
|
void pinMode(uint8_t pin, uint8_t mode)
|
||||||
{
|
{
|
||||||
|
if (pin == 16)
|
||||||
|
{
|
||||||
|
uint32_t val = (mode == OUTPUT) ? 1 : 0;
|
||||||
|
|
||||||
|
MODIFY_PERI_REG(PAD_XPD_DCDC_CONF, 0x43, 1);
|
||||||
|
MODIFY_PERI_REG(RTC_GPIO_CONF, 1, 0);
|
||||||
|
MODIFY_PERI_REG(RTC_GPIO_ENABLE, 1, val);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t mux = g_pin_muxes[pin];
|
uint32_t mux = g_pin_muxes[pin];
|
||||||
if (mode == INPUT)
|
if (mode == INPUT)
|
||||||
{
|
{
|
||||||
@ -102,6 +114,12 @@ void pinMode(uint8_t pin, uint8_t mode)
|
|||||||
|
|
||||||
void digitalWrite(uint8_t pin, uint8_t val)
|
void digitalWrite(uint8_t pin, uint8_t val)
|
||||||
{
|
{
|
||||||
|
if (pin == 16)
|
||||||
|
{
|
||||||
|
MODIFY_PERI_REG(RTC_GPIO_OUT, 1, (val & 1));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t mask = 1 << pin;
|
uint32_t mask = 1 << pin;
|
||||||
if (val)
|
if (val)
|
||||||
GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, mask);
|
GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, mask);
|
||||||
@ -111,6 +129,9 @@ void digitalWrite(uint8_t pin, uint8_t val)
|
|||||||
|
|
||||||
int digitalRead(uint8_t pin)
|
int digitalRead(uint8_t pin)
|
||||||
{
|
{
|
||||||
|
if (pin == 16)
|
||||||
|
return (READ_PERI_REG(RTC_GPIO_IN_DATA) & 1);
|
||||||
|
else
|
||||||
return ((gpio_input_get() >> pin) & 1);
|
return ((gpio_input_get() >> pin) & 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user