• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友,商务沟通v:ai_draw
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

Cubieboard2裸机开发之(一)点亮板载LED

点滴 admin 9年前 (2015-08-20) 2123次浏览 已收录 0个评论 扫描二维码

前言

        CUbieboard2板载两个LED,一个绿色的,一个蓝色的,其中绿色LED通过三极管与PH20管脚连接,蓝色LED通过三极管与PH21管脚连接,这里只以蓝色LED为例,电路原理图如图1和图2所示。

Cubieboard2裸机开发之(一)点亮板载LED

                                      图1 LED所使用的管脚

Cubieboard2裸机开发之(一)点亮板载LED

                                           图2 LED与三极管连接图

由此可知,当PH21输出高电平时,三极管处于导通状态,从而蓝色LED会被点亮;当PH21输出低电平时,三极管处于截止状态,蓝色LED熄灭。

一、目的

       编写第一个裸机程序,点亮板载的蓝色LED。

二、源代码说明

       程序很简单,已给出详细注释,直接看代码好了,如下所示:


/*
 * (C) Copyright 2014
 *
 * a very simple source to set the blue led on for Cubieboard2.
 * 
 */

/* GPIO reg addr */
#define SUNXI_PIO_BASE          0x01C20800
#define SUNXI_PIO_PH_CFG2_BASE  (SUNXI_PIO_BASE + 0x104)
#define SUNXI_PIO_PH_DAT_BASE   (SUNXI_PIO_BASE + 0x10C)

/* global entry point */
.globl _start
_start: b    reset

reset:
    ldr r0, =SUNXI_PIO_PH_CFG2_BASE
    /* before write, read the reg value into r1*/
    ldr r1, [r0]
    /* blue led is connected to PH21 */
    ldr r2, =(0xf << 20)
    mvn r3, r2
    /* clear 4 bits for PH21*/
    and r1, r1, r3
    /* set PH21 for output function */
    orr r1, r1, #(0x1 << 20)
    str r1, [r0]

    /* set PH21 output 1(high value), so the blue led is on */
    ldr r0, =SUNXI_PIO_PH_DAT_BASE
    ldr r1, [r0]
    orr r1, r1, #(1 << 21)
    str r1, [r0]
loop:
    b loop

三、验证

         使用arm-linux-gnueabihf工具编译后生成led.b文件,再使用mksunxiboot工具在led.b文件前面加上一个头部,最终生成led.bin文件,使用以下命令将led.bin文件烧写到TF中:

#sudo dd if=./led.bin of=/dev/sdb bs=1024 seek=8

      将TF卡插入Cubieboard2,上电即可看到蓝色LED被点亮。效果如图3所示。

Cubieboard2裸机开发之(一)点亮板载LED

                                                图3 效果图

 

转自http://www.cnblogs.com/lknlfy/p/3583806.html

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址