• 【原创】滑盖检测代码中的延时操作


    #define D_CHECK_FLIP_COVER_TIMES 5  // 由于hs_poll_gpio函数是以100ms的周期被调用,这里的5表示5次polling的结果都是高电平,即滑盖open
    #define D_FLIP_COVER_IS_OPEN  TRUE
    #define D_FLIP_COVER_IS_CLOSED  FALSE

    //这个宏定义很重要,用来指示前面几次polling 的结果是否都相同,比如检测5次,则D_CHECK_FLIP_COVER_MASK= 1<<5 -1 =0x1f=0x11111

    #define D_CHECK_FLIP_COVER_MASK ((1<<D_CHECK_FLIP_COVER_TIMES)-1)

    #define D_FLIP_COVER_OPEN  D_CHECK_FLIP_COVER_MASK
    #define D_FLIP_COVER_CLOSED  0

    static uint32 stFlipcoverCheckTimes = 0;
    static boolean hs_cover_on = D_FLIP_COVER_IS_CLOSED;

    // code:

    cover_on = HS_COVER_ON(); //读取GPIO,判断高低电平
     if (cover_on == D_FLIP_COVER_IS_OPEN)
            stFlipcoverCheckTimes = (stFlipcoverCheckTimes << 1) | 0x00000001;  //如果是高电平,表示向上滑(open),并记录次数
     else  // cover_on == D_FLIP_COVER_IS_CLOSED
            stFlipcoverCheckTimes = (stFlipcoverCheckTimes << 1) | 0x00000000;   //如果是低电平,表示向下滑(close),

     cover_on = hs_cover_on;

     if ((stFlipcoverCheckTimes & D_CHECK_FLIP_COVER_MASK) == D_FLIP_COVER_OPEN)  //如果前面几次都是高电平,则可以判断滑盖open
      cover_on = D_FLIP_COVER_IS_OPEN;
     else if ((stFlipcoverCheckTimes & D_CHECK_FLIP_COVER_MASK) == D_FLIP_COVER_CLOSED)
      cover_on = D_FLIP_COVER_IS_CLOSED;

     if ( cover_on != hs_cover_on )
     {
      hs_cover_on = cover_on;   /* Invert the state */
      if (cover_on==D_FLIP_COVER_IS_OPEN)
      {
       cover_key = (byte)HS_FLIP_OPEN_K;
      }
      else // cover_on == D_FLIP_COVER_IS_CLOSED
      {
       cover_key = (byte)HS_FLIP_CLOSE_K;
      }

      /* Pass key to show that the state changed, open/close
      */
      KEYPAD_PASS_KEY_CODE( cover_key, HS_NONE_K );
      KEYPAD_PASS_KEY_CODE( HS_RELEASE_K, cover_key );

  • 相关阅读:
    yun rpm
    Codeforces Round #375 (Div. 2) D. Lakes in Berland (DFS或并查集)
    51nod 1276 1276 岛屿的数量 (很好玩的题目
    玄学C语言之scanf,printf
    51nod 算法马拉松17 解题报告 以后不能赛中写题解(查逐梦者抄袭本人代码...
    51Nod 1007 正整数分组 -简单DP
    算法马拉松13 A-E解题报告
    十五天集训_
    贴一发STL源码
    省赛反思以及未来提高计划
  • 原文地址:https://www.cnblogs.com/hengfeng/p/1522552.html
Copyright © 2020-2023  润新知