Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2918327
  • 博文数量: 401
  • 博客积分: 12926
  • 博客等级: 上将
  • 技术积分: 4588
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-22 14:51
文章分类

全部博文(401)

文章存档

2015年(16)

2014年(4)

2013年(12)

2012年(82)

2011年(98)

2010年(112)

2009年(77)

分类:

2009-03-09 14:08:39

disable_lcd_backlight
    ldr        r0, =0x840                                                    /*GPIO的function寄存器,后三位是function*/
    ldr        r1, =MFP_LCD_PWM
    str        r0, [r1]
    ldr        r4, =0x40e00000
    mov        r5, #(1<<(LCD_PWM_GPIO%32))          /* 算出GPIO所在寄存器的位 */
    ldr        r0, [r4, #(0x0c + 4*(LCD_PWM_GPIO/32))]      /* r4 + 0x0c 是GPDR的寄存器base , GPDR是设置GPIO方向的寄存器*/
    orr        r0, r0, r5                                                               /*ORR是逻辑或*/
    str        r0, [r4, #(0x0c + 4*(LCD_PWM_GPIO/32))]      /* 设置GPIO为output*/

    bic        r0, r0, r5                                                               /*BIC是位清零*/
    str        r0, [r4, #(0x0c + 4*(LCD_PWM_GPIO/32))]      /* 设置GPIO为inputput*/



    mov        r5, #(1<<(LCD_PWM_GPIO%32))                  /* corresponding gpio bit */
    str        r5, [r4, #(0x24 + 4*(LCD_PWM_GPIO/32))]     /* GPCR:设置GPIO为低 , GPCR是设置GPIO为低的寄存器, 0x24是GPCR寄存器的base*/

    str        r5, [r4, #(0x18 + 4*(LCD_PWM_GPIO/32))]               /* GPSR: 设置GPIO为高,GPSR是设置GPIO为高的寄存器, 0x18是GPCR寄存器的base*/

 

    ldr        r0, =0x840                          将0x840导入到寄存器r0中

   str        r0, [r1]                                   *r1 = r0  

    orr        r0, r0, r5                               r0 = r0 | r5

    ldr        r0, [r4, #(0x0c + 4*(LCD_PWM_GPIO/32))]      (r4, #(0x0c + 4*(LCD_PWM_GPIO/32)))算出的是寄存器地址,将r0寄存器的值存入到算出地址中。           r0 = *(r4 + #(0x0c + 4*(LCD_PWM_GPIO/32)))

阅读(2488) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:ARM-GPIO register 详解

给主人留下些什么吧!~~