DA14683开发:GPIO操作

DA14683GPIO操作

勤基科技  陈杰明

添加GPIO初始化函数

在main.c中,添加以下子函数,初始化GPIO口,按键的引脚设置为输入,LED灯的引脚设置为输出。

/*按键GPIO设置*/

void key_led_init()

{

hw_gpio_set_pin_function(HW_GPIO_PORT_1,HW_GPIO_PIN_6, HW_GPIO_MODE_INPUT,

HW_GPIO_FUNC_GPIO);//按键

hw_gpio_set_pin_function(HW_GPIO_PORT_1,HW_GPIO_PIN_5, HW_GPIO_MODE_OUTPUT,

HW_GPIO_FUNC_GPIO);//LED

}

然后在以下位置调用该函数:

这样我们的GPIO口初始化就完成了。

添加按键和LED开关定义

同样在main.c中添加以下宏定义和子函数

/*按键宏定义*/

#define IS_KEY1_DONE()\

!hw_gpio_get_pin_status(HW_GPIO_PORT_1,HW_GPIO_PIN_6)

/*LED状态翻转*/

void led_toggle()

{

hw_gpio_toggle(HW_GPIO_PORT_1, HW_GPIO_PIN_5 );

}

以上代码定义了按键按下的状态,低电平表示按下按键

led_toggle函数为GPIO输出状态取反。

添加任务实体函数

在main.c中加入以下任务处理函数:

/*简单的按键处理线程*/

void key_led_task(void *keydeal)

{

static unsigned char key_press_sta=0;//按键标志位

for( ;; )//等同while(1)

{

if(IS_KEY1_DONE()&&key_press_sta==0)

{

printf("IS_KEY1_DONE\r\n");

led_toggle();

key_press_sta=1;// 按下一次,标志位置1,防止抖动和长按多次执行

}

if(!IS_KEY1_DONE())//按键抬起则标志位置0

key_press_sta=0;

}

}

这个是任务线程处理函数。

创建按键LED任务

在mian.c的system_init函数中创建按键LED任务,代码如下:

OS_TASK handle1;// 创建新的任务句柄

OS_TASK_CREATE("KEY_LED_TASK",

key_led_task,

NULL,

512,

mainPXP_REPORTER_TASK_PRIORITY,

handle1);

OS_ASSERT(handle1);

编译、下载、运行

完成以上代码添加以后,编译程序,下载运行,把按键的GPIO接地,LED灯的引脚就会输出反状态。

通过以上的简单GPIO操作,用户即可了解GPIO口的大致操作方法。

更多GPIO操作方法请查阅hw_gpio.h,了解具体实现方法请查阅hw_gpio.c

原文地址:https://www.cnblogs.com/kinji/p/9829429.html

时间: 2024-11-10 17:46:08

DA14683开发:GPIO操作的相关文章

linux 标准 GPIO 操作

Linux 提供了GPIO 操作的 API,具体初始化及注册函数在 driver/gpio/lib_gpio.c 中实现. #include int gpio_request(unsigned gpio, const char *label); 获得并占有 GPIO port 的使用权,由参数 gpio 指定具体 port.非空的label指针有助于诊断.主要告诉内核这块地址被占用了.当其他地方调用同一地址的gpio_request就会报告错误,该地址已经被申请.在/proc/mem有地址占用表

gpio操作(LS1B)

1.一般gpio_request 封装了mem_request(),起保护作用,最后要调用mem_free之类的,主要是告诉内核这个地址被占用了.当其他地方调用同一地址gpio_request就会报告错误,改地址已被申请.在/proc/mem 可以看到有地址占用表描述. 这种用法的保护前提是大家都遵守先申请在访问,有一个地方没有遵守这个规则,这功能就失效了,就好比进程互斥,必须大家在访问临界资源的时候都先获取锁一样,其中一个没有遵守约定,代码报废: 2.__gpio_set_value 和 gp

TI CC2530基础实验(普通GPIO操作——按一下按键亮一下灯)

有关CC2530的GPIO基本知识.普通GPIO操作有关寄存器的介绍.IAR Embedded Workbench IDE软件使用:TI CC2530基础实验(普通GPIO操作--点亮led灯) 电路原理图: 分析:需要按一下按键亮一下灯,并且不采用中断方式,即我们需要实时去监测按下是否被按下(P0_4为低电平表示按下,高电平表示松开). 设置: 灯LED1对应的P1_0引脚为普通I/O.方向为输出 按键S1对应的P0_4引脚为普通I/O.方向为输入 程序: /*****************

Win10 IoT C#开发 5 - 操作 IoT 设备内嵌 SQLite 数据库 CURD

Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 前几章我们讲了 Raspberry 安装 Win10 IoT 系统及搭建开发环境.部署程序及操作 GPIO 和 UART 的方法,通过这些功能我们已经可以获得到传感器发送给我们的数据,但是如果数据不能及时推送回服务器就需要在本地缓存,使用 SQLite 数据库是一个不错的选择.这一章我们来看如何操作 IoT

LM3S6911 GPIO操作

最新在学习LM3S6911开发板子.和经典程序 Hello World! 程序是一样的,拿到开发板的第一个程序就是写一个流水灯的程序. 但是这个板子有个问题,使用板载的ISP来下载编译好的.bin文件很奇怪,能下载进去,但是现象不是想要的.但是改用ULinK2的时候就万事大吉了.好的就不废话了,先直接上代码. #include "hw_memmap.h" #include "hw_types.h" #include "debug.h" #incl

六、2440裸机开发 lcd操作

六.lcd的控制 原文地址:http://blog.csdn.net/woshidahuaidan2011/article/details/51278058 by jaosn Email: [email protected] LCD ( Liquid Crystal Display 的简称)液晶显示器.LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏

一、GPIO操作

1.1 硬件原理图 四个引脚接到LED上,跟别是GPF4,GPF5,GPF6和GPF7,前三个引脚分别控制三个LED,GPF7此引脚作为DM9000网卡的中断. 发光二极管的正极接3.3V电源,负极接在MCU上,当MCU的对应的引脚给一个低电平的时候,电路导通,发光二极管发光. 芯片手册,GPIO配置,如下图,控制LED的属于GPF管脚: GPF的寄存器如下图: GPFCON:GPF管脚的控制寄存器 GPFDAT:GPF管脚的数据寄存器 GPFUP:GPF上拉使能的寄存器 GPF4-GPF6对应

STM32基本GPIO操作:按键输入(扫描+外部中断)

(涉及专有名词较多,难免解释不到位,若有错误还请指出,谢谢!) 硬件连接图如下: 一.扫描 思路是在main函数中通过死循环来扫描端口电平状态检测,以此判断按键是否按下.实现较为简单. 1.初始化(注意C语言中变量声明需放在函数开头) 以下是初始化PB5端口(LED灯)的代码,每一条语句的含义在我另一篇博客里 GPIO_InitTypeDef GPIO_Init1; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_Init1.

树莓派高级GPIO库,wiringpi2 for python使用笔记(三)GPIO操作

GPIO库的核心功能,当然就是操作GPIO了,GPIO就是"通用输入/输出"接口,比如点亮一个LED.继电器等,或者通过iic spi 1-wire等协议,读取.写入数据,这都是GPIO的用处,可以说没有GPIO,树莓派只能当小电脑用,有了GPIO,就升级成一个控制器了.先来说说怎么操作一个数字量(高低电平). 先看代码: import wiringpi2 as gpio from wiringpi2 import GPIO gpio.wiringPiSetup() #初始化 gpio