ECR6600 驱动API-GPIO 使用示例

void drive_gpio_process(void *arg)
{
	bool io_sta = false;

	while (1)
	{
		if (drv_gpio_read(GPIO_NUM_17) == 0) // 扫描方法读IO17的状态
		{
			os_msdelay(50); // 延时50ms
			if (drv_gpio_read(GPIO_NUM_17) == 0)
			{
				while (drv_gpio_read(GPIO_NUM_17) == 0);
				io_sta = !io_sta;
				os_printf(LM_OS, LL_INFO, "now io_sta is: %d \n", io_sta);
			}
		}

		drv_gpio_write(GPIO_NUM_0, io_sta); // IO0输出
	}
}

void drive_gpio_init(void)
{
	drv_gpio_init();								 // GPIO初始化
	PIN_FUNC_SET(IO_MUX_GPIO17, FUNC_GPIO17_GPIO17); // 将IO设置为GPIO功能
	PIN_FUNC_SET(IO_MUX_GPIO0, FUNC_GPIO0_GPIO0);

	drv_gpio_ioctrl(GPIO_NUM_17, DRV_GPIO_CTRL_PULL_TYPE, DRV_GPIO_ARG_PULL_UP);   // 配置IO17为上拉输入
	drv_gpio_ioctrl(GPIO_NUM_0, DRV_GPIO_CTRL_SET_DIRCTION, DRV_GPIO_ARG_DIR_OUT); // 配置IO0为输出

	os_task_create("gpio_process", 6, 1024, (task_entry_t)drive_gpio_process, NULL); // 创建GPIO线程
}

int main(void)
{
	component_cli_init(E_UART_SELECT_BY_KCONFIG); // 串口初始化
	os_printf(LM_OS, LL_INFO, "program run. \n"); // 上电打印信息

	drive_gpio_init();

	vTaskStartScheduler();	// 启动tsak
	return 0;
}

编译烧录完成后 打印信息如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值