硬件资源

    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

相关文章:

  • 2021-09-17
  • 2021-08-21
  • 2021-05-09
  • 2021-12-19
  • 2021-08-30
  • 2022-12-23
  • 2021-12-05
  • 2021-12-10
猜你喜欢
  • 2021-12-03
  • 2021-07-09
  • 2021-07-16
  • 2021-05-31
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案