i.MX6ULL终结者按键例程程序设计

本实验介绍如何在Linux环境下,为i.MX6ULL开发板编写GPIO驱动和按键驱动。内容包括创建GPIO驱动文件夹、初始化GPIO引脚、读写GPIO操作,以及按键驱动的初始化、按键消抖处理,最终实现通过按键控制蜂鸣器的开启和关闭。
摘要由CSDN通过智能技术生成

本实验对应的例程在光盘资料的:i.MX6UL终结者光盘资料\04_裸机例程源码\6_key 目录下,我们在Ubuntu系统下使用命令“mkdir 6_key”建立“6_key”文件夹,如图 1所示:
在这里插入图片描述

图 1

使用命令“cd 6_key”进入6_key文件。如图 2所示:
在这里插入图片描述

图 2

然后使用命令“cp -r …/5_beep/* ./”将上一章试验中的所有内容拷贝到刚刚新建的“6_key”里面,如图 3所示:
在这里插入图片描述

图 3

拷贝完成以后的工程如图 4所示:
在这里插入图片描述

图 4

使用命令“mkdir drivers/gpio”在drivers驱动目录下新建“gpio”文件夹。GPIO操作驱动都放在这个目录下。如图 5所示:
在这里插入图片描述

图 5

使用命令“vi drivers/gpio/gpio.h”新建gpio.h文件。如图 14.3.6所示:
在这里插入图片描述

图 6

添加如下内容:

  1 #ifndef _BSP_GPIO_H
  2 #define _BSP_GPIO_H
  3 #define _BSP_KEY_H
  4 #include "imx6ul.h"
  5 
  6 /* 枚举类型和结构体定义 */
  7 typedef enum _gpio_pin_direction
  8 {
   
  9     kGPIO_DigitalInput = 0U,            /* 输入 */
 10     kGPIO_DigitalOutput = 1U,           /* 输出 */
 11 } gpio_pin_direction_t;
 12 
 13 
 14 typedef struct _gpio_pin_config
 15 {
   
 16     gpio_pin_direction_t direction; /* GPIO方向:输入还是输出 */
 17     uint8_t outputLogic;            /* 如果是输出的话,默认输出电平 */
 18 } gpio_pin_config_t;
 19 
 20 
 21 /* 函数声明 */
 22 void gpio_init(GPIO_Type *base, int pin, gpio_pin_config_t *config);
 23 int gpio_pinread(GPIO_Type *base, int pin);
 24 void gpio_pinwrite(GPIO_Type *base, int pin, int value);
 25 
 26 #endif

gpio.h 中定义了一个枚举类型 gpio_pin_direction_t 和结构体 gpio_pin_config_t。
gpio_pin_direction_t:GPIO方向,输入或输出。
gpio_pin_config_t:GPIO配置结构体,里面有 GPIO 的方向和默认输出电平两个成员变量。
部分截图如图 7所示:
在这里插入图片描述

图 7

添加完成之后,保存退出文件。
使用命令“vi drivers/gpio/gpio.c”新建gpio.c文件。如图 8所示:
在这里插入图片描述

图 8

添加内容如下:

1 #include "gpio.h"
  2 
  3 /*
  4  * @description         : GPIO初始化。
  5  * @param - base        : 要初始化的GPIO组。
  6  * @param - pin         : 要初始化GPIO在组内的编号。
  7  * @param - config      : GPIO配置结构体。
  8  * @return                      : 无
  9  */
 10 void gpio_init(GPIO_Type *base, int pin, gpio_pin_config_t *config)
 11 {
   
 12         if(config->direction 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值