<Linux嵌入式_点灯>

   

目录

   

 一、硬件原理

 二、软件原理

1、打开相关GPIO时钟

2、设置IO复用

3、设置IO电气属性

4、设置GPIO使用哪个IO口

5、控制IO输出低电平


 一、硬件原理

点灯就是我们要点亮一个发光二极管,下面看看怎样才能点亮 

现在我们知道如何点亮一个发光二极管了,很简单是不是!

那么我们来看看我们开发板上关于发光二极管的原理图,这里我学习使用的是IMX6ULL_Linux开发板。下图,我们看到开发板上已经默认给LED灯正极一个3V3的拉高高电平了,我们想要点亮它只需要在另外一端提供低电平即可。

 

如上就是点亮一个LED灯的本质,是不是灰常简单!

下面我们来看看,如何使用软件来实现提供低电平。

 二、软件原理

1、打开相关GPIO时钟

2、设置IO复用

3、设置IO电气属性

4、设置GPIO使用哪个IO口

5、控制IO输出低电平

上面的过程,是不是看起来和STM32很相似,但是在IMX6ULL中,用的是ARM内核,与STM32像相比较起来,其外设的命名规范是不同的,下面我们来详细的解释下:

查看相关原理图,我们看到,和LED0相关的外设是GPIO1的IO3,我们首先打开GPIO1的外设时钟

 翻看参考手册,在700页我们看到,GPIO1的时钟在CCM_CCGR1中设置,为了简便我们可以把所有的外设时钟都打开,将CCM_CCGR0~6写入0xffffffff即可。

下面我们使用汇编代码来配置


.global _start /**/

_start:
    /* 1.On All Clock  1、打开相关GPIO时钟*/
        /* On CMM_CCGR1 */
    ldr r0, =0x020c4068
    ldr r1, =0xffffffff
    str r1, [r0]

        /* On CMM_CCGR2 */
    ldr r0, =0x020c406c
    ldr r1, =0xffffffff
    str r1, [r0]

        /* On CMM_CCGR3 */
    ldr r0, =0x020c4070
    ldr r1, =0xffffffff
    str r1, [r0]

        /* On CMM_CCGR4 */
    ldr r0, =0x020c4078
    ldr r1, =0xffffffff
    str r1, [r0]

        /* On CMM_CCGR5 */
    ldr r0, =0x020c407c
    ldr r1, =0xffffffff
    str r1, [r0]

        /* On CMM_CCGR6 */
    ldr r0, =0x020c4080
    ldr r1, =0xffffffff
    str r1, [r0]

    /* 2.set IO use to GPIO1_IO03  2、设置IO复用*/
    ldr r0, =0x020e0068
    ldr r1, =0x5
    str r1, [r0]

	/* 3、配置GPIO1_IO03的IO属性	
	 *bit 16:0 HYS关闭
	 *bit [15:14]: 00 默认下拉
     *bit [13]: 0 kepper功能
     *bit [12]: 1 pull/keeper使能
     *bit [11]: 0 关闭开路输出
     *bit [7:6]: 10 速度100Mhz
     *bit [5:3]: 110 R0/6驱动能力
     *bit [0]: 0 低转换率
     */
    /* 3.set electric attribute   3、设置IO电气属性*/
    ldr r0, =0x020e02F4
    ldr r1, =0x10B0
    str r1, [r0]

    /* set GPIO to output  4、设置GPIO使用哪个IO口*/
    ldr r0, =0x0209c004
    ldr r1, =0x8
    str r1, [r0]

    /* On GPIO1_DR IO03 output 5、控制IO输出低电平*/
    ldr r0, =0x0209c000
    ldr r1, =0x0
    str r1, [r0]

loop:
    b loop /* 循环不让程序退出 */
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

绅士·永

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

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

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

打赏作者

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

抵扣说明:

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

余额充值