ESP8266学习【5】——外设及API使用示例

    技术2023-10-21  95

    一、GPIO操作:

    设置GPIO输出示例:

    // 管脚功能选择(参数1【PIN_NAME】管脚名、参数2【FUNC】管脚功能) PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4); // GPIO4设为IO口 // 将相应管脚设为输出模式,并输出对应电平(参数1【gpio_no】、参数2:输出电平) GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1); // IO4 = 1(高电平)

    设置GPIO输入示例:

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0); // GPIO_0设为IO口 GPIO_DIS_OUTPUT(GPIO_ID_PIN(0)); // GPIO_0失能输出(默认),即管脚输入 PIN_PULLUP_DIS(PERIPHS_IO_MUX_GPIO0_U); // GPIO_0失能内部上拉(默认) PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U); // GPIO_0使能内部上拉 GPIO_INPUT_GET(GPIO_ID_PIN(0)) //读取IO状态

    设置GPIO中断:

    ETS_GPIO_INTR_DISABLE(); // 关闭GPIO中断功能 ETS_GPIO_INTR_ATTACH((ets_isr_t)GPIO_INTERRUPT,NULL); // 注册中断回调函数 gpio_pin_intr_state_set(GPIO_ID_PIN(0),GPIO_PIN_INTR_NEGEDGE); // GPIO_0下降沿中断 ETS_GPIO_INTR_ENABLE(); // 打开GPIO中断功能 // 读取GPIO中断状态 S_GPIO_INT = GPIO_REG_READ(GPIO_STATUS_ADDRESS); // 清除中断状态位(如果不清除状态位,则会持续进入中断) GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, S_GPIO_INT);

     

     相关API:

     

    二、软件定时器:

    // 关闭软件定时器 os_timer_disarm(&OS_Timer_1); // 设置定时器 // 参数一:要设置的定时器;参数二:回调函数(需类型转换);参数三:回调函数的参数 os_timer_setfn(&OS_Timer_1,(os_timer_func_t *)OS_Timer_1_cb, NULL); // 使能(启动)ms定时器 // 参数一:要使能的定时器;参数二:定时时间(单位:ms);参数三:1=重复/0=只一次 os_timer_arm(&OS_Timer_1, time_ms, time_repetitive);

     

     

    三、硬件定时器:

    hw_timer_init(0, 1); // ①:初始化硬件定时器【参数1:中断源】【参数2:是否重复】 hw_timer_set_func(HW_Timer_INT); // ③:注册硬件定时器中断回调函数 hw_timer_arm(500000); // ④:设置定时器参数(单位us,参数必须<=1,677,721)

     

    四、FLASH操作:

    spi_flash_erase_sector(0x77); // 擦除0x77扇区 【参数:扇区编号】 // 向Flash写数据(参数1=【字节地址】、参数2=写入数据的指针、参数3=数据长度) spi_flash_write(0x77*4096, (uint32 *)A_W_Data, sizeof(A_W_Data)); spi_flash_read(0x77*4096, (uint32 *)A_R_Data, sizeof(A_W_Data)); // 向Flash读数据

     

     

    Processed: 0.009, SQL: 10