环境及工具与第一章相同,这里就不在重复!
代码基于第一章,将原软件定时器实现的功能改为硬件定时器实现,user_main.c代码示例如下
#include "ets_sys.h"
#include "osapi.h"
#include "gpio.h"
#include "user_interface.h"
#include "user_devicefind.h"
#include "user_webserver.h"
#if ESP_PLATFORM
#include "user_esp_platform.h"
#endif
void user_rf_pre_init(void)
{
}
/*******************************************************************************
* 自定义引脚运行函数_定时器回调
*******************************************************************************/
void Task_Run(void){
static bool status = false;
if(GPIO_INPUT_GET(14)){//读取GPIO14的引脚电平
if (status == true){
status = false;
GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0);//GPIO12输出低电平
}else{
status = true;
GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);//GPIO12输出高电平
}
}else{
GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);//GPIO12输出高电平
}
}
/******************************************************************************
* FunctionName : user_init
* Description : entry of user application, init user function here
* Parameters : none
* Returns : none
*******************************************************************************/
void user_init(void)
{
/*设置串口波特率*/
uart_init(115200,9600);
/*打印版本信息*/
os_printf("\r\n");os_printf("SDK version:%s\n", system_get_sdk_version());
/*配置GPIO12*/
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);
/*配置GPIO14*/
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U,FUNC_GPIO14);
/*配置 硬件定时器*/
hw_timer_init(0,1);//初始化ISR硬件定时器,自动填装
hw_timer_set_func(Task_Run);//设置定时器回调函数
hw_timer_arm(1000000);//使能硬件中断定时器,定时1秒
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。