【龙芯1c库】封装gpio接口和使用示例

本文详述了如何在龙芯1c库中使用GPIO接口,包括gpio_init(), gpio_set()和gpio_get()函数的使用,并提供了测试思路和代码清单。文章还介绍了龙芯1c的GPIO命名规则、相关寄存器及其配置,以及封装代码库的关键点。" 114778872,6874631,Redis数据结构与面试解析,"['Redis', '缓存', '数据结构', '分布式锁', '持久化']
摘要由CSDN通过智能技术生成

龙芯1c库是把龙芯1c的常用外设的常用功能封装为一个库,类似于STM32库。git地址:https://gitee.com/caogos/OpenLoongsonLib1c

本文首先以一个例子介绍“龙芯1c库”中gpio接口是怎样使用的,然后再详细讲解是怎样封装这些接口的。

龙芯1c库中gpio接口使用示例

gpio接口简介

龙芯1c库提供3个接口,分别是gpio_init(),gpio_set()和gpio_get()。

使用步骤为,先使用gpio_init()初始化对应的gpio,然后使用gpio_set()在gpio上输出高低电平,或者使用gpio_get()读取gpio上的电平值。

测试思路

使用led测试gpio输出,选择了GPIO6,GPIO32,GPIO74三个引脚来测试。

用按键测试gpio输入,采用不断读取gpio的方式,一旦发现按键按下,则指示灯点亮,否则指示灯熄灭。按键所在引脚为GPIO85(智龙v2.0和v2.1上的按键S3),指示灯为GPIO32。

在智龙首发版、v2.0和v2.1上gpio32都接有led,并且都可控。

代码清单

app\main.c

#include "../lib/gpio.h"
#include "../lib/clock.h"
#include "led.h"


/*
 * 测试库中gpio作为输出时的相关接口
 * led闪烁10次
 */
void gpio_test_output(void)
{
    int i;
    unsigned int gpio = 32;     // 智龙首发版、v2.0和v2.1都有这个led
//    unsigned int gpio = 6;
//    unsigned int gpio = 74;

    // 初始化
    gpio_init(gpio, gpio_mode_output);

    // 输出10个矩形波,如果gpio50上有led,则可以看见led闪烁10次
    for (i=0; i<10; i++)
    {
        gpio_set(gpio, gpio_level_low);
        delay();
        gpio_set(gpio, gpio_level_high);
        delay();
    }
    return ;
}



/*
 * 测试库中gpio作为输入时的相关接口
 * 按键按下时,指示灯点亮,否则,熄灭
 */
void gpio_test_input(void)
{
    unsigned int key_gpio = 85;     // GPIO85/I2C_SDA0,智龙v2.1上的按键S3
    unsigned int led_gpio = 32;     // 用于当按键被按下时,此led点亮,否则熄灭

    // 初始化
    gpio_init(key_gpio, gpio_mode_input);
    led_init(led_gpio);

    while (1)
    {
        if (gpio_level_low != gpio_get(key_gpio))
            continue;       // 按键没有按下

        // 延时(软件消抖)后再次确认按键是否按下
        delay();
        if (gpio_level_low != gpio_get(key_gpio))
            continue;       // 按键没有按下

        // 点亮指示灯
        led_on(led_gpio);

        // 等待释放按键
        while (gpio_level_high != gpio_get(key_gpio))
            ;
        delay();

        // 熄灭指示灯
        led_off(led_gpio);
    }
}


int main(void)
{
    /*
     * 测试库中gpio作为输出时的相关接口
     * led闪烁10次
     */
    gpio_test_output();
        
    /*
     * 测试库中gpio作为输入时的相关接口
     * 按键按下时,指示灯点亮,否则,熄灭
     */
    gpio_test_input();

	return(0);
}

更完整的代码清单,请查看http://git.oschina.net/caogos/OpenLoongsonLib1c的提交记录
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值