I.MX6U-裸机-按键实验(7)

在实验(6)的基础之上,我们加入了,按键的外设使用以及GPIO的模块化。其内容如下:

I.MX6U-裸机-按键实验(7)_第1张图片

首先根据原理图得知复用的引脚,然后我们进行了gpio模块化设置,方便我们外设初始化

流程:

GPIO模块:

gpio_init:初始化引脚   gpio_init(GPIO1,18, &key_config)

gpio_oinread:读取电平

gpio_pinwrite:写入电平

I.MX6U-裸机-按键实验(7)_第2张图片

 这是一个(led)GPIO初始化函数,包括输入参数举例(GPIO1,3,&led_config),表示初始化GPIO1的第三角,且初始化了led的结构体,通过这个结构体就可以进行初始化包括输入输出,高低电平。如下:

I.MX6U-裸机-按键实验(7)_第3张图片

这是一个(beep)GPIO初始化函数

1.设置复用(输入)

2.电器属性(0x10B0)

3.初始化gpio(输入模式,默认高电平)

4.控制该电平的高低(main函数调用)

void key_init(void)
{	
	gpio_pin_config_t key_config;
	
	/* 1、初始化IO复用, 复用为GPIO1_IO18 */
	IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18,0);

	IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18,0xF080);
	/* 3、初始化GPIO */
	//GPIO1->GDIR &= ~(1 << 18);	/* GPIO1_IO18设置为输入 */	
	key_config.direction = kGPIO_DigitalInput;
	gpio_init(GPIO1,18, &key_config);
	
}

GPIO引脚读取电位值函数(用来判断按键是否按下)

例如,这里的按键判断通过该函数实现


 GPIO引脚写入电位值函数(用来控制输出电平)

 I.MX6U-裸机-按键实验(7)_第4张图片

 例如:这里不在控制寄存器改变led的输出,而是直接通过这个函数写入

I.MX6U-裸机-按键实验(7)_第5张图片

总结:

通过GPIO模块可以实现不再操控寄存器,更加简单,不用记住寄存器位置

你可能感兴趣的:(imx6u学习,嵌入式硬件,linux)