龙芯1B:点亮第一个led灯

 

仅供学习

文章目录

前言

一、GPIO是什么?

二、新建项目操作步骤(后续文章不再新建项目)

三、点亮LED代码

四、编译调试

由于未带开发板,所有暂时未有实物展示效果,回头补上

总结


前言

大家好!大家点点关注,大家的关注才是我持续更新的动力!

 ba6a16c930e64faaa733031640e9f1de.png

ls1x-drv:开发板设备的通用驱动,包含 LS1B 所有控制器

core:启动文件和 LS1B 的管脚定义

libc:库文件

include:头文件 

以上是对文件夹的简要说明,方便学习!


随着龙芯1B嵌入式芯片的发展,学习之前一定要先看各类文件!

龙芯 1B 芯片是基于 GS232 处理器核的片上系统,具有高性价比,可广泛应用于工业控 制、家庭网关、信息家电、医疗器械和安全应用等领域。

1B 采用 Wire Bond BGA256 封装。

1B 芯片具有以下关键特性:

• 集成一个 GS232 双发射龙芯处理器核,指令和数据 L1 Cache 各 8KB

• 集成一路 LCD 控制器,最大分辨率可支持到 1920*1080@60Hz/16bit

• 集成 2 个 10M/100M 自适应 GMAC

• 集成 1 个 16/32 位 133MHz DDR2 控制器

• 集成 1 个 USB 2.0 接口,兼容 EHCI 和 OHCI

• 集成 1 个 8 位 NAND FLASH 控制器,最大支持 32GB

• 集成中断控制器,支持灵活的中断设置

• 集成 2 个 SPI 控制器,支持系统启动

• 集成 AC97 控制器 • 集成 1 个全功能串口、1 个四线串口和 10 个两线串口

• 集成 3 路 I2C 控制器,兼容 SMBUS • 集成 2 个 CAN 总线控制器

• 集成 61 个 GPIO 端口

• 集成 1 个 RTC 接口

• 集成 4 个 PWM 控制器

• 集成看门狗电路

7a16f4bee0184b408eaebdca66deb276.png

龙芯1B处理器手册下载链接

60a93d65434846538ea41d51e9871d91.png

各类说明都有!!!


此文不讲述寄存器方式代码!!!

一、GPIO是什么?

LS1B0200 具有 61 位 GPIO,支持位操作。

当 GPIO 作为输入时,高电平电压范围是 3.3V-5V, 低电平是 0V;

当 GPIO 作为输出时,高电平是 3.3V,低电平是 0V;

GPIO 对应的所有 PAD 都 是推拉方式。

GPIO 引脚编号:GPIO00~GPIO61,但是没有 GPIO31,共计 61 个引脚。

GPIO寄存器方式以及复用方式在群内文档中有介绍,在此不再赘述。

3741ad51df31495394ce35595bff5570.png

二、新建项目操作步骤(后续文章不再新建项目)

LED内部电路图:

39f6e3e728a04306945e3e3ebde89723.png

新建项目:

第一步:

3241ba38e7ab42959ae6141ef32e06b5.png

第二步:

a490bbe44eaf4358b6f5b48d9ce9163e.png

第三步:

825f805dbabe4737bfc540652d20def5.png

 第四步:

2b3801cd27ac4666b486fc1a6bf35fef.png

 第五步:

16811668f153406eb1d2b57f859c7a14.png

新建项目完成:

decc809a2c8d469c9ee8c3c54083a1a7.png

三、点亮LED代码

#include <stdio.h>

#include "ls1b.h"
#include "mips.h"

//-------------------------------------------------------------------------------------------------
// BSP
//-------------------------------------------------------------------------------------------------

#include "bsp.h"
#include "ls1b_gpio.h"
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------

#define LED1 44
#define LED2 45
#define LED3 46



#define ON  0
#define OFF 1


//LED初始化
 void LED_IO(void)
 {
    //设置GPIO为输出状态
    gpio_enable(LED3,DIR_OUT);
    gpio_enable(LED2,DIR_OUT);
    gpio_enable(LED1,DIR_OUT);
    
    gpio_write(LED3,OFF);
    gpio_write(LED2,OFF);
    gpio_write(LED1,OFF);
 }

//LED测试函数
 void LED_Test(void)
 {
    gpio_write(LED1,ON);
    delay_ms(100);
    gpio_write(LED1,OFF);
    gpio_write(LED2,ON);
    delay_ms(100);
    gpio_write(LED2,OFF);
    gpio_write(LED3,ON);
    delay_ms(100);
    gpio_write(LED3,OFF);
    
 }

int main(void)
{
    printk("\r\nmain() function.\r\n");
    LED_IO();

    for (;;)
    {
        LED_Test();
    }

    return 0;
}

编译完成,无问题。

026e8605f5a1438dba277b92b1622fdb.png

四、编译调试

(1)点击8462b14131ed44d998f09fe7e1cb0cff.png图标进行编译,编译无误后,点击e21c6cf2f3144c09825a1f7b4f4bd8bb.png图标,将程序下载到内存之 中。注意:此时代码没有下载到 nand flash 之中,按下复位键后,程序会消失。

(2)改延时时间,调整 LED 闪烁速度。

(3)修改程序,控制其它 3 个 LED 闪烁。

由于未带开发板,所有暂时未有实物展示效果,回头补上


总结

        要理解GPIO的工作方式以及库函数的编写方式。龙芯写代码让我感觉特别像STM32CubeMX的方式,其实就是感觉初始化起来很简单,用起来很方便,只有推拉方式。


联系我们

               公众号   嵌入式up   如果文章对您有帮助,请打赏一元呗,感谢支持,分享不易,码字不易。希望对大家帮助!


不怕万人阻挡,只怕自己投降。

  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值