在实验(6)的基础之上,我们加入了,按键的外设使用以及GPIO的模块化。其内容如下:
首先根据原理图得知复用的引脚,然后我们进行了gpio模块化设置,方便我们外设初始化
流程:
GPIO模块:
gpio_init:初始化引脚? ?gpio_init(GPIO1,18, &key_config)
gpio_oinread:读取电平
gpio_pinwrite:写入电平
?这是一个(led)GPIO初始化函数,包括输入参数举例(GPIO1,3,&led_config),表示初始化GPIO1的第三角,且初始化了led的结构体,通过这个结构体就可以进行初始化包括输入输出,高低电平。如下:
这是一个(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引脚写入电位值函数(用来控制输出电平)
?
?例如:这里不在控制寄存器改变led的输出,而是直接通过这个函数写入
总结:
通过GPIO模块可以实现不再操控寄存器,更加简单,不用记住寄存器位置
|