Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1229496
  • 博文数量: 479
  • 博客积分: 12240
  • 博客等级: 上将
  • 技术积分: 4999
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-24 17:12
文章分类

全部博文(479)

文章存档

2014年(1)

2013年(1)

2012年(1)

2011年(95)

2010年(177)

2009年(167)

2008年(16)

2007年(21)

分类: LINUX

2009-10-14 20:17:07

硬件资源

    LED2——GPO_06控制。

移植代码GPIO底层API

    GPIO相关底层API在arch/arm/mach-lpc32xx/include/mach/lpc32xx_gpio.h文件中实现。
    使用范例:
536     /* Set LED GPIO as an output */
537     __raw_writel(OUTP_STATE_GPO(1), GPIO_P2_DIR_SET(GPIO_IOBASE));

292     /* Enable the backlight */
293 #if defined (CONFIG_SMARTARM3250_QVGA_PANEL_V1_00)
294     __raw_writel(OUTP_STATE_GPO(4), GPIO_P3_OUTP_CLR(GPIO_IOBASE));
295 #elif defined (CONFIG_SMARTARM3250_QVGA_PANEL_V1_01)
296     __raw_writel(OUTP_STATE_GPO(4), GPIO_P3_OUTP_SET(GPIO_IOBASE));
297 #endif

LED驱动

    GPO_06是功能复用引脚,GPO_06和LCDVD[18]。选择寄存器p3_mux_clr[6],置位为GPO_06:
    代码:__raw_writel((1<<6), GPIO_P3_MUX_CLR(GPIO_IOBASE);
    
    拉高拉低GPO_06,寄存器:p3_outp_set和p3_outp_clr,都是bit6:
    代码:__raw_writel(OUTP_STATE_GPO(6), GPIO_P3_OUTP_SET(GPIO_IOBASE));
             __raw_writel(OUTP_STATE_GPO(6), GPIO_P3_OUTP_CLR(GPIO_IOBASE));


    GPIO_IOBASE的定义:
./arch/arm/mach-lpc32xx/arch-lpc32xx.c:#define GPIO_IOBASE io_p2v(GPIO_BASE)
./arch/arm/mach-lpc32xx/sys-lpc32xx.h:#define GPIO_IOBASE io_p2v(GPIO_BASE)

TICK实现代码

    arch/arm/mach-lpc32xx/sys-lpc32xx.h文件:
 69 #elif defined (CONFIG_SMARTARM3250_ENABLE_LED_TICK)
 70 #define LEDTICK { \
 71     static int blink = 0; \
 72     static int tick1 = 0; \
 73     tick1++; \
 74     if (tick1 > HZ) \
 75     { \
 76         tick1 = 0; \
 77         blink = 1 - blink; \
 78         if (blink == 0) { \
 79             __raw_writel(OUTP_STATE_GPO(6), GPIO_P3_OUTP_SET(GPIO_IOBASE)); \
 80         } \
 81         else { \
 82             __raw_writel(OUTP_STATE_GPO(6), GPIO_P3_OUTP_CLR(GPIO_IOBASE)); \
 83         } \
 84     } \
 85 }
 86 #else
阅读(784) | 评论(0) | 转发(1) |
0

上一篇:LPC3250高分屏设置

下一篇:SD Card Driver

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