mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
rtc_gpio: Replace RTC_GPIO_IS_VALID_GPIO macro with inline function
This commit is contained in:
parent
4494e15ecf
commit
21964a42fb
@ -46,10 +46,22 @@ typedef enum {
|
|||||||
RTC_GPIO_MODE_DISABLED, /*!< Pad (output + input) disable */
|
RTC_GPIO_MODE_DISABLED, /*!< Pad (output + input) disable */
|
||||||
} rtc_gpio_mode_t;
|
} rtc_gpio_mode_t;
|
||||||
|
|
||||||
#define RTC_GPIO_IS_VALID_GPIO(gpio_num) ((gpio_num < GPIO_PIN_COUNT && rtc_gpio_desc[gpio_num].reg != 0)) //to decide whether it is a valid GPIO number
|
|
||||||
|
|
||||||
extern const rtc_gpio_desc_t rtc_gpio_desc[GPIO_PIN_COUNT];
|
extern const rtc_gpio_desc_t rtc_gpio_desc[GPIO_PIN_COUNT];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Determine if the specified GPIO is a valid RTC GPIO.
|
||||||
|
*
|
||||||
|
* @param gpio_num GPIO number
|
||||||
|
* @return true if GPIO is valid for RTC GPIO use. talse otherwise.
|
||||||
|
*/
|
||||||
|
inline static bool rtc_gpio_is_valid_gpio(gpio_num_t gpio_num)
|
||||||
|
{
|
||||||
|
return gpio_num < GPIO_PIN_COUNT
|
||||||
|
&& rtc_gpio_desc[gpio_num].reg != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define RTC_GPIO_IS_VALID_GPIO(gpio_num) rtc_gpio_is_valid(gpio_num) // Deprecated, use rtc_gpio_is_valid_gpio()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Init a GPIO as RTC GPIO
|
* @brief Init a GPIO as RTC GPIO
|
||||||
*
|
*
|
||||||
|
@ -87,7 +87,7 @@ const rtc_gpio_desc_t rtc_gpio_desc[GPIO_PIN_COUNT] = {
|
|||||||
---------------------------------------------------------------*/
|
---------------------------------------------------------------*/
|
||||||
esp_err_t rtc_gpio_init(gpio_num_t gpio_num)
|
esp_err_t rtc_gpio_init(gpio_num_t gpio_num)
|
||||||
{
|
{
|
||||||
RTC_MODULE_CHECK(RTC_GPIO_IS_VALID_GPIO(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
RTC_MODULE_CHECK(rtc_gpio_is_valid_gpio(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
||||||
portENTER_CRITICAL(&rtc_spinlock);
|
portENTER_CRITICAL(&rtc_spinlock);
|
||||||
// 0: GPIO connected to digital GPIO module. 1: GPIO connected to analog RTC module.
|
// 0: GPIO connected to digital GPIO module. 1: GPIO connected to analog RTC module.
|
||||||
SET_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, (rtc_gpio_desc[gpio_num].mux));
|
SET_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, (rtc_gpio_desc[gpio_num].mux));
|
||||||
@ -100,7 +100,7 @@ esp_err_t rtc_gpio_init(gpio_num_t gpio_num)
|
|||||||
|
|
||||||
esp_err_t rtc_gpio_deinit(gpio_num_t gpio_num)
|
esp_err_t rtc_gpio_deinit(gpio_num_t gpio_num)
|
||||||
{
|
{
|
||||||
RTC_MODULE_CHECK(RTC_GPIO_IS_VALID_GPIO(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
RTC_MODULE_CHECK(rtc_gpio_is_valid_gpio(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
||||||
portENTER_CRITICAL(&rtc_spinlock);
|
portENTER_CRITICAL(&rtc_spinlock);
|
||||||
//Select Gpio as Digital Gpio
|
//Select Gpio as Digital Gpio
|
||||||
CLEAR_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, (rtc_gpio_desc[gpio_num].mux));
|
CLEAR_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, (rtc_gpio_desc[gpio_num].mux));
|
||||||
@ -131,7 +131,7 @@ static esp_err_t rtc_gpio_output_disable(gpio_num_t gpio_num)
|
|||||||
|
|
||||||
static esp_err_t rtc_gpio_input_enable(gpio_num_t gpio_num)
|
static esp_err_t rtc_gpio_input_enable(gpio_num_t gpio_num)
|
||||||
{
|
{
|
||||||
RTC_MODULE_CHECK(RTC_GPIO_IS_VALID_GPIO(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
RTC_MODULE_CHECK(rtc_gpio_is_valid_gpio(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
||||||
portENTER_CRITICAL(&rtc_spinlock);
|
portENTER_CRITICAL(&rtc_spinlock);
|
||||||
SET_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, rtc_gpio_desc[gpio_num].ie);
|
SET_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, rtc_gpio_desc[gpio_num].ie);
|
||||||
portEXIT_CRITICAL(&rtc_spinlock);
|
portEXIT_CRITICAL(&rtc_spinlock);
|
||||||
@ -141,7 +141,7 @@ static esp_err_t rtc_gpio_input_enable(gpio_num_t gpio_num)
|
|||||||
|
|
||||||
static esp_err_t rtc_gpio_input_disable(gpio_num_t gpio_num)
|
static esp_err_t rtc_gpio_input_disable(gpio_num_t gpio_num)
|
||||||
{
|
{
|
||||||
RTC_MODULE_CHECK(RTC_GPIO_IS_VALID_GPIO(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
RTC_MODULE_CHECK(rtc_gpio_is_valid_gpio(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
||||||
portENTER_CRITICAL(&rtc_spinlock);
|
portENTER_CRITICAL(&rtc_spinlock);
|
||||||
CLEAR_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, rtc_gpio_desc[gpio_num].ie);
|
CLEAR_PERI_REG_MASK(rtc_gpio_desc[gpio_num].reg, rtc_gpio_desc[gpio_num].ie);
|
||||||
portEXIT_CRITICAL(&rtc_spinlock);
|
portEXIT_CRITICAL(&rtc_spinlock);
|
||||||
@ -152,7 +152,7 @@ static esp_err_t rtc_gpio_input_disable(gpio_num_t gpio_num)
|
|||||||
esp_err_t rtc_gpio_set_level(gpio_num_t gpio_num, uint32_t level)
|
esp_err_t rtc_gpio_set_level(gpio_num_t gpio_num, uint32_t level)
|
||||||
{
|
{
|
||||||
int rtc_gpio_num = rtc_gpio_num = rtc_gpio_desc[gpio_num].rtc_num;;
|
int rtc_gpio_num = rtc_gpio_num = rtc_gpio_desc[gpio_num].rtc_num;;
|
||||||
RTC_MODULE_CHECK(RTC_GPIO_IS_VALID_GPIO(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
RTC_MODULE_CHECK(rtc_gpio_is_valid_gpio(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
||||||
|
|
||||||
if (level) {
|
if (level) {
|
||||||
WRITE_PERI_REG(RTC_GPIO_OUT_W1TS_REG, (1 << (rtc_gpio_num + RTC_GPIO_OUT_DATA_W1TS_S)));
|
WRITE_PERI_REG(RTC_GPIO_OUT_W1TS_REG, (1 << (rtc_gpio_num + RTC_GPIO_OUT_DATA_W1TS_S)));
|
||||||
@ -167,7 +167,7 @@ uint32_t rtc_gpio_get_level(gpio_num_t gpio_num)
|
|||||||
{
|
{
|
||||||
uint32_t level = 0;
|
uint32_t level = 0;
|
||||||
int rtc_gpio_num = rtc_gpio_desc[gpio_num].rtc_num;
|
int rtc_gpio_num = rtc_gpio_desc[gpio_num].rtc_num;
|
||||||
RTC_MODULE_CHECK(RTC_GPIO_IS_VALID_GPIO(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
RTC_MODULE_CHECK(rtc_gpio_is_valid_gpio(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
||||||
|
|
||||||
portENTER_CRITICAL(&rtc_spinlock);
|
portENTER_CRITICAL(&rtc_spinlock);
|
||||||
level = READ_PERI_REG(RTC_GPIO_IN_REG);
|
level = READ_PERI_REG(RTC_GPIO_IN_REG);
|
||||||
@ -177,7 +177,7 @@ uint32_t rtc_gpio_get_level(gpio_num_t gpio_num)
|
|||||||
|
|
||||||
esp_err_t rtc_gpio_set_direction(gpio_num_t gpio_num, rtc_gpio_mode_t mode)
|
esp_err_t rtc_gpio_set_direction(gpio_num_t gpio_num, rtc_gpio_mode_t mode)
|
||||||
{
|
{
|
||||||
RTC_MODULE_CHECK(RTC_GPIO_IS_VALID_GPIO(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
RTC_MODULE_CHECK(rtc_gpio_is_valid_gpio(gpio_num), "RTC_GPIO number error", ESP_ERR_INVALID_ARG);
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case RTC_GPIO_MODE_INPUT_ONLY:
|
case RTC_GPIO_MODE_INPUT_ONLY:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user