龙芯俱乐部开源技术社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2905|回复: 1

裸机编程之led -PMON引导篇

[复制链接]

48

主题

257

帖子

4920

积分

新手上路

Rank: 1

积分
4920
发表于 2016-3-12 17:33:19 | 显示全部楼层 |阅读模式

“裸机编程之helloworld -PMON引导篇”http://www.openloongson.org/foru ... &extra=page%3D1
的基础上,加入了操作gpio的代码,可以把智龙v2.0上的几个灯点亮了

源码http://git.oschina.net/caogos/Op ... 450c174dc0d5cae2bd5
另外希望大家可以加入一起封装一个龙芯库http://git.oschina.net/caogos/OpenLoongsonLib1c

下面把操作gpio那部分代码贴上


// 寄存器地址
#define LS1X_GPIO_CFG1                      (0xbfd010c4)
#define LS1X_GPIO_OE1                       (0xbfd010d4)
#define LS1X_GPIO_OUT1                      (0xbfd010f4)


// 操作寄存器
#define REG(addr)                *(volatile unsigned int *)(addr)


void led_on(unsigned int gpio)
{
    REG(LS1X_GPIO_CFG1) = 1<<(gpio-32);
    REG(LS1X_GPIO_OE1) = ~(1<<(gpio-32));
    REG(LS1X_GPIO_OUT1) = ~(1<<(gpio-32));
}

void led_off(unsigned int gpio)
{
    REG(LS1X_GPIO_CFG1) = 1<<(gpio-32);
    REG(LS1X_GPIO_OE1) = ~(1<<(gpio-32));
    REG(LS1X_GPIO_OUT1) = 1<<(gpio-32);
}


void delay(void)
{
    int i = 20;
    int j = 100000;
    int k = 1000000;

    while (i-- > 0)
        while (j-- > 0)
            while (k-- > 0)
                ;
}

void gpio_test(void)
{
    unsigned int led_gpio = 50;
//    unsigned int led_gpio = 51;
//    unsigned int led_gpio = 52;
//    unsigned int led_gpio = 53;
//    unsigned int led_gpio = 54;

    led_on(led_gpio);
    delay();
    led_off(led_gpio);
}
   



4

主题

8

帖子

673

积分

版主

Rank: 7Rank: 7Rank: 7

积分
673
发表于 2016-3-14 04:39:20 | 显示全部楼层
赞!
自由职业嵌入式工程师(专业提供网络设备解决方案)
联系方式:18013582125,18114354589 (陆工)
个人博客:forgotfun.org
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|龙芯俱乐部开源技术社区

GMT+8, 2024-4-20 17:45 , Processed in 0.119161 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表