⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_key.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 4 页
字号:
    147          #if defined (HAL_BOARD_CC2430BB)
    148            #define HAL_KEY_POINT_HIGH_USED  0
    149          #endif
    150          
    151          #if defined (HAL_BOARD_CC2430EB)
    152            #define HAL_KEY_JOYSTICK_ENABLE
    153            #define HAL_KEY_JOY_CHN   HAL_ADC_CHANNEL_6
    154          
    155            #define HAL_KEY_SW_5_ENABLE
    156            #define HAL_KEY_SW_5_PORT     P0                      /* Port location of SW5 */
    157            #define HAL_KEY_SW_5_BIT      HAL_KEY_BIT5            /* Bit location of SW5 */
    158            #define HAL_KEY_SW_5_SEL      P0SEL                   /* Port Select Register for SW5 */
    159            #define HAL_KEY_SW_5_DIR      P0DIR                   /* Port Direction Register for SW5 */
    160            #define HAL_KEY_SW_5_INP      P0INP                   /* Port Input Mode Register for SW5 */
    161            #define HAL_KEY_SW_5_IEN      IEN1                    /* Interrupt Enable Register for SW5 */
    162            #define HAL_KEY_SW_5_IENBIT   HAL_KEY_BIT5            /* Interrupt Enable bit for SW5 */
    163            #define HAL_KEY_SW_5_EDGE     HAL_KEY_RISING_EDGE     /* Type of interrupt for SW5 */
    164            #define HAL_KEY_SW_5_EDGEBIT  HAL_KEY_BIT2            /* EdgeType enable bit SW5 */
    165            #define HAL_KEY_SW_5_ICTL     PICTL                   /* Port Interrupt Control for SW5 */
    166            #define HAL_KEY_SW_5_ICTLBIT  HAL_KEY_BIT4            /* Interrupt enable bit for SW5 */
    167            #define HAL_KEY_SW_5_PXIFG    P0IFG                   /* Port Interrupt Flag for SW5 */
    168          
    169            #define HAL_KEY_POINT_HIGH_USED   HAL_KEY_SW_5_BIT    /* P0 can only be enabled/disabled as group of high or low nibble */
    170          #endif
    171          
    172          /**************************************************************************************************
    173           *                                            TYPEDEFS
    174           **************************************************************************************************/
    175          
    176          
    177          /**************************************************************************************************
    178           *                                        GLOBAL VARIABLES
    179           **************************************************************************************************/
    180          static uint8 halKeySavedKeys;     /* used to store previous key state in polling mode */
                              ^
Warning[Pe177]: variable "halKeySavedKeys" was declared but never referenced
    181          static halKeyCBack_t pHalKeyProcessFunction;
                                      ^
Warning[Pe177]: variable "pHalKeyProcessFunction" was declared but never
          referenced

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    182          bool Hal_KeyIntEnable;            /* interrupt enable/disable flag */
   \                     Hal_KeyIntEnable:
   \   000000                DS 1

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    183          uint8 halSaveIntKey;              /* used by ISR to save state of interrupt-driven keys */
   \                     halSaveIntKey:
   \   000000                DS 1
    184          
    185          static uint8 HalKeyConfigured;
                              ^
Warning[Pe177]: variable "HalKeyConfigured" was declared but never referenced
    186          
    187          /**************************************************************************************************
    188           *                                        FUNCTIONS - Local
    189           **************************************************************************************************/
    190          void halProcessKeyInterrupt (void);
    191          
    192          
    193          /**************************************************************************************************
    194           *                                        FUNCTIONS - API
    195           **************************************************************************************************/
    196          /**************************************************************************************************
    197           * @fn      HalKeyInit
    198           *
    199           * @brief   Initilize Key Service
    200           *
    201           * @param   none
    202           *
    203           * @return  None
    204           **************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    205          void HalKeyInit( void )
   \                     HalKeyInit:
    206          {
   \   000000                ; Saved register size: 0
   \   000000                ; Auto size: 0
    207          #if (HAL_KEY == TRUE)
    208            /* Initialize previous key to 0 */
    209            halKeySavedKeys = 0;
    210          
    211          #if defined (HAL_KEY_SW_6_ENABLE)
    212            HAL_KEY_SW_6_SEL &= ~(HAL_KEY_SW_6_BIT);    /* Set pin function to GPIO */
    213            HAL_KEY_SW_6_DIR &= ~(HAL_KEY_SW_6_BIT);    /* Set pin direction to Input */
    214          #endif
    215          
    216          #if defined (HAL_KEY_SW_5_ENABLE)
    217            HAL_KEY_SW_5_SEL &= ~(HAL_KEY_SW_5_BIT);    /* Set pin function to GPIO */
    218            HAL_KEY_SW_5_DIR &= ~(HAL_KEY_SW_5_BIT);    /* Set pin direction to Input */
    219            HAL_KEY_SW_5_INP |= HAL_KEY_SW_5_BIT;       /* Set pin input mode to tri-state */
    220          #endif
    221          
    222            /* Initialize callback function */
    223            pHalKeyProcessFunction  = NULL;
    224          
    225            /* Start with key is not configured */
    226            HalKeyConfigured = FALSE;
    227          #endif /* HAL_KEY */
    228          }
   \   000000   02....       LJMP    ?BRET
    229          
    230          /**************************************************************************************************
    231           * @fn      HalKeyConfig
    232           *
    233           * @brief   Configure the Key serivce
    234           *
    235           * @param   interruptEnable - TRUE/FALSE, enable/disable interrupt
    236           *          cback - pointer to the CallBack function
    237           *
    238           * @return  None
    239           **************************************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    240          void HalKeyConfig (bool interruptEnable, halKeyCBack_t cback)
   \                     HalKeyConfig:
    241          {
   \   000000                ; Saved register size: 0
   \   000000                ; Auto size: 0
    242          #if (HAL_KEY == TRUE)
    243            /* Enable/Disable Interrupt or */
    244            Hal_KeyIntEnable = interruptEnable;
    245          
    246            /* Register the callback fucntion */
    247            pHalKeyProcessFunction = cback;
    248          
    249            /* Determine if interrupt is enable or not */
    250            if (Hal_KeyIntEnable)
    251            {
    252          
    253              /*
    254                 Work around for CC2430DB when interrupt is enabled and SW5 (center joystick)
    255                 is used. This SW5 uses P2 which also has debug lines connected to it. This
    256                 causes contant interruption on P2INT_VECTOR. Disable the usage of P2 interrupt
    257                 will stop this problem.
    258              */
    259              #if defined (HAL_BOARD_CC2430DB)
    260                #undef HAL_KEY_SW_5_ENABLE                      /* Dis-allow SW5 when key interrupt is enable */
    261              #endif
    262          
    263          #if defined (HAL_KEY_SW_5_ENABLE)
    264              PICTL &= ~(HAL_KEY_SW_5_EDGEBIT);                 /* Set rising or falling edge */
    265            #if (HAL_KEY_SW_5_EDGE == HAL_KEY_FALLING_EDGE)
    266              PICTL |= HAL_KEY_SW_5_EDGEBIT;
    267            #endif
    268              HAL_KEY_SW_5_ICTL |= HAL_KEY_SW_5_ICTLBIT;        /* Set interrupt enable bit */
    269              HAL_KEY_SW_5_IEN |= HAL_KEY_SW_5_IENBIT;
    270              HAL_KEY_SW_5_PXIFG = ~(HAL_KEY_SW_5_BIT);        /* Clear any pending interrupts */
    271          #endif
    272          
    273          #if defined (HAL_KEY_SW_6_ENABLE)
    274              PICTL &= ~(HAL_KEY_SW_6_EDGEBIT);                 /* Set rising or falling edge */
    275            #if (HAL_KEY_SW_6_EDGE == HAL_KEY_FALLING_EDGE)
    276              PICTL |= HAL_KEY_SW_6_EDGEBIT;
    277            #endif
    278              HAL_KEY_SW_6_ICTL |= HAL_KEY_SW_6_ICTLBIT;        /* Set interrupt enable bit */
    279              HAL_KEY_SW_6_IEN |= HAL_KEY_SW_6_IENBIT;
    280              HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT);        /* Clear any pending interrupts */
    281          #endif
    282          
    283              /* Do this only after the hal_key is configured - to work with sleep stuff */
    284              if (HalKeyConfigured == TRUE)
    285              {
    286                osal_stop_timerEx( Hal_TaskID, HAL_KEY_EVENT);  /* Cancel polling if active */
    287              }
    288            }
    289            else    /* Interrupts NOT enabled */
    290            {
    291          
    292              /*
    293                 Work around for CC2430DB when interrupt is enabled and SW5 (center joystick)
    294                 is used. This SW5 uses P2 which also has debug lines connected to it. This
    295                 causes contant interruption on P2INT_VECTOR. Disable the usage of P2 interrupt
    296                 will stop this problem.
    297              */
    298              #if defined (HAL_BOARD_CC2430DB)
    299                #define HAL_KEY_SW_5_ENABLE                     /* Allow SW5 only when key interrupt is disable */
    300              #endif
    301          
    302          #if defined (HAL_KEY_SW_6_ENABLE)
    303              HAL_KEY_SW_6_ICTL &= ~(HAL_KEY_SW_6_ICTLBIT);     /* Clear interrupt enable bit */
    304              HAL_KEY_SW_6_IEN &= ~(HAL_KEY_SW_6_IENBIT);
    305          #endif
    306          
    307          #if defined (HAL_KEY_SW_5_ENABLE)
    308              HAL_KEY_SW_5_ICTL &= ~(HAL_KEY_SW_5_ICTLBIT);     /* Clear interrupt enable bit */
    309              HAL_KEY_SW_5_IEN &= ~(HAL_KEY_SW_5_IENBIT);
    310          #endif
    311              osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_POLLING_VALUE);    /* Kick off polling */
    312            }
    313          
    314            /* Key now is configured */
    315            HalKeyConfigured = TRUE;
    316          #endif /* HAL_KEY */
    317          }
   \   000000   02....       LJMP    ?BRET
    318          
    319          /**************************************************************************************************
    320           * @fn      HalKeyRead
    321           *
    322           * @brief   Read the current value of a key
    323           *
    324           * @param   None
    325           *
    326           * @return  keys - current keys status
    327           **************************************************************************************************/
    328          

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    329          uint8 HalKeyRead ( void )
   \                     HalKeyRead:
    330          {
   \   000000                ; Saved register size: 0
   \   000000                ; Auto size: 0
    331          
    332            uint8 keys = 0;
    333          
    334          #if (HAL_KEY == TRUE)
    335          
    336          #if defined (HAL_KEY_JOYSTICK_ENABLE)
    337            uint8 ksave0 = 0;
    338            uint8 ksave1;
    339            uint8 adc;
    340          #endif
    341          
    342          #if defined (HAL_KEY_SW_6_ENABLE)
    343            if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT))    /* Key is active low */
    344            {
    345              keys |= HAL_KEY_SW_6;
    346            }
    347          #endif
    348          #if defined (HAL_KEY_SW_5_ENABLE)
    349            if (HAL_KEY_SW_5_PORT & HAL_KEY_SW_5_BIT)       /* Key is active high */
    350            {
    351              keys |= HAL_KEY_SW_5;
    352            }
    353          #endif
    354          
    355          #if defined (HAL_KEY_JOYSTICK_ENABLE)
    356          /*
    357          *  The joystick control is encoded as an analog voltage.  Keep on reading
    358          *  the ADC until two consecutive key decisions are the same.
    359          */
    360          
    361            do
    362            {
    363              ksave1 = ksave0;    /* save previouse key reading */
    364          
    365              adc = HalAdcRead (HAL_KEY_JOY_CHN, HAL_ADC_RESOLUTION_8);
    366          
    367              if  (CHVER == 0x01)
    368              {
    369                /* Rev B */
    370                if ((adc >= 90) && (adc <= 100))
    371                {
    372                   ksave0 |= HAL_KEY_UP;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -