嵌入式技术论坛
直播中

jsqueh

8年用户 1211经验值
私信 关注
[问答]

请问一下RK2706播放器的Key该怎样去编写呢

打开RM970原理图,看见一别扭的key方案.如图所示:



整理思路后,编写如下函数实现扫描.

#define SW2   (1<<2)    //PC2
#define SW3   (1<<3)    //PC3
#define SW4   (1<<4)    //PC4
#define SW5   (1<<5)    //PC4
#define SW6   (1<<6)    //PC3
rt_uint32_t get_key_value(void)
{
  rt_uint32_t temp=0;
  /* PC5 set high */
  GPIO_PCDR |= (1<<5 );
  /* get SW2 SW3 SW4 */
  temp = GPIO_PCDR&(SW2 | SW3 | SW4);
  if ( temp&(SW2) )       //SW2有按下
  {
    return SW2;
  }
  if (temp&(SW3|SW4)) //SW3 SW4 SW5 SW6其中有一按下
  {
    /* PC5 set low */
    GPIO_PCDR &= ~(1<<5);
    temp = GPIO_PCDR&(SW2 | SW3 | SW4);
    if (temp&SW3)   //SW3按下
    {
      return SW3;
    }
    if (temp&SW4)
    {
      return SW4;
    }
    GPIO_PCDR |= (1<<5);
    temp = GPIO_PCDR&(SW2 | SW3 | SW4);
    if ((temp&SW3) == 0)
    {
      return SW5;
    }
    return SW6;
  }
  /* 没键被按下 */
  return 0;
}

测试思路:

temp = get_key_value();
#define key_enter_GETVALUE()  !(temp&SW3)
#define key_down_GETVALUE()   !(temp&SW6)
#define key_up_GETVALUE()     !(temp&SW5)
#define key_right_GETVALUE()  !(temp&SW4)
#define key_left_GETVALUE()   !(temp&SW2)
if ( key_enter_GETVALUE() == 0 )
{
  rt_kprintf("key_enter
");
}
......................

更多回帖

发帖
×
20
完善资料,
赚取积分