日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

z-stac配置按键

發布時間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 z-stac配置按键 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

按鍵的定義一般有兩種,開關和搖桿。這里只討論開關的定義。

根據硬件在hal_board_cfg.h中定義

在hal_key.h中定義宏位

在hal_key.c中需要初始化相關寄存器


附錄:

hal_board_cfg.h

/**************************************************************************************************Filename: hal_board_cfg.hRevised: $Date: 2009-08-24 10:47:59 -0700 (Mon, 24 Aug 2009) $Revision: $Revision: 20635 $Description: Describe the purpose and contents of the file.Copyright 2006-2009 Texas Instruments Incorporated. All rights reserved.IMPORTANT: Your use of this Software is limited to those specific rightsgranted under the terms of a software license agreement between the userwho downloaded the software, his/her employer (which must be your employer)and Texas Instruments Incorporated (the "License"). You may not use thisSoftware unless you agree to abide by the terms of the License. The Licenselimits your use, and you acknowledge, that the Software may not be modified,copied or distributed unless embedded on a Texas Instruments microcontrolleror used solely and exclusively in conjunction with a Texas Instruments radiofrequency transceiver, which is integrated into your product. Other than forthe foregoing purpose, you may not use, reproduce, copy, prepare derivativeworks of, modify, distribute, perform, display or sell this Software and/orits documentation for any purpose.YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION AREPROVIDED 揂S IS?WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALLTEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHERLEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSESINCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVEOR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENTOF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.Should you have any questions regarding your right to use this Software,contact Texas Instruments Incorporated at www.TI.com. **************************************************************************************************/#ifndef HAL_BOARD_CFG_H #define HAL_BOARD_CFG_H/** =============================================================* | Chipcon SmartRF05EB Evaluation Board, plus |* | Texas Instruments CC2530EM Evaluation Module |* | --------------------------------------------------------- |* | mcu : 8051 core |* | clock : 32MHz |* =============================================================*//* ------------------------------------------------------------------------------------------------* Includes* ------------------------------------------------------------------------------------------------*/#include "hal_mcu.h" #include "hal_defs.h" #include "hal_types.h"/* ------------------------------------------------------------------------------------------------* CC2590/CC2591 support** Define HAL_PA_LNA_CC2590 if CC2530+CC2590EM is used* Define HAL_PA_LNA if CC2530+CC2591EM is used* Note that only one of them can be defined* ------------------------------------------------------------------------------------------------*/ #define xHAL_PA_LNA #define xHAL_PA_LNA_CC2590/* ------------------------------------------------------------------------------------------------* Board Indentifier** Define the Board Identifier to HAL_BOARD_CC2530EB_REV13 for SmartRF05 EB 1.3 board* ------------------------------------------------------------------------------------------------*/#if !defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_BOARD_CC2530EB_REV13)#define HAL_BOARD_CC2530EB_REV17 #endif/* ------------------------------------------------------------------------------------------------* Clock Speed* ------------------------------------------------------------------------------------------------*/ #define HAL_CPU_CLOCK_MHZ 32/* 32 kHz clock source select in CLKCONCMD */ #if !defined (OSC32K_CRYSTAL_INSTALLED) || (defined (OSC32K_CRYSTAL_INSTALLED) && (OSC32K_CRYSTAL_INSTALLED == TRUE))#define OSC_32KHZ 0x00 /* external 32 KHz xosc */ #else#define OSC_32KHZ 0x80 /* internal 32 KHz rcosc */ #endif/* ------------------------------------------------------------------------------------------------* LED Configuration* ------------------------------------------------------------------------------------------------*/#if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && !defined (HAL_PA_LNA_CC2590)#define HAL_NUM_LEDS 3 #elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) || defined (HAL_PA_LNA_CC2590)#define HAL_NUM_LEDS 1 #else#error Unknown Board Indentifier #endif#define HAL_LED_BLINK_DELAY() st( { volatile uint32 i; for (i=0; i<0x5800; i++) { }; } )/* 1 - Green */ /*官方 #define LED1_BV BV(0) #define LED1_SBIT P1_0 #define LED1_DDR P1DIR */ /*D2 Luke */ #define LED1_BV BV(0) #define LED1_SBIT P0_0 #define LED1_DDR P0DIR#define LED1_POLARITY ACTIVE_HIGH/*D3 Luke*/#define LED2_BV BV(0)#define LED2_SBIT P2_0#define LED2_DDR P2DIR#define LED2_POLARITY ACTIVE_HIGH#ifdef HAL_BOARD_CC2530EB_REV17/* 2 - Red */ /*官方#define LED2_BV BV(1)#define LED2_SBIT P1_1#define LED2_DDR P1DIR *//* 3 - Yellow */#define LED3_BV BV(4)#define LED3_SBIT P1_4#define LED3_DDR P1DIR#define LED3_POLARITY ACTIVE_HIGH #endif/* ------------------------------------------------------------------------------------------------* Push Button Configuration* ------------------------------------------------------------------------------------------------*/#define ACTIVE_LOW ! #define ACTIVE_HIGH !! /* double negation forces result to be '1' *//* S1 官方 #define PUSH1_BV BV(1) #define PUSH1_SBIT P0_1 */ /*S1 luke */ #define PUSH1_BV BV(4) #define PUSH1_SBIT P0_4#ifdef HAL_BOARD_CC2530EB_REV17#define PUSH1_POLARITY ACTIVE_HIGH #elif defined (HAL_BOARD_CC2530EB_REV13)#define PUSH1_POLARITY ACTIVE_LOW #else#error Unknown Board Indentifier #endif/* Joystick Center Press */ #define PUSH2_BV BV(0) //#define PUSH2_SBIT P2_0 #define PUSH2_POLARITY ACTIVE_HIGH /* ------------------------------------------------------------------------------------------------* OSAL NV implemented by internal flash pages.* ------------------------------------------------------------------------------------------------*/// Flash is partitioned into 8 banks of 32 KB or 16 pages. #define HAL_FLASH_PAGE_PER_BANK 16 // Flash is constructed of 128 pages of 2 KB. #define HAL_FLASH_PAGE_SIZE 2048 #define HAL_FLASH_WORD_SIZE 4// CODE banks get mapped into the XDATA range 8000-FFFF. #define HAL_FLASH_PAGE_MAP 0x8000// The last 16 bytes of the last available page are reserved for flash lock bits. #if defined NON_BANKED #define HAL_FLASH_LOCK_BITS 16 #define HAL_NV_PAGE_END 30 #else #define HAL_FLASH_LOCK_BITS 16 #define HAL_NV_PAGE_END 126 #endif// Re-defining Z_EXTADDR_LEN here so as not to include a Z-Stack .h file. #define HAL_FLASH_IEEE_SIZE 8 #define HAL_FLASH_IEEE_PAGE (HAL_NV_PAGE_END+1) #define HAL_FLASH_IEEE_OSET (HAL_FLASH_PAGE_SIZE - HAL_FLASH_LOCK_BITS - HAL_FLASH_IEEE_SIZE) #define HAL_INFOP_IEEE_OSET 0xC#define HAL_NV_PAGE_CNT 6 #define HAL_NV_PAGE_BEG (HAL_NV_PAGE_END-HAL_NV_PAGE_CNT+1)// Used by DMA macros to shift 1 to create a mask for DMA registers. #define HAL_NV_DMA_CH 0 #define HAL_DMA_CH_RX 3 #define HAL_DMA_CH_TX 4#define HAL_NV_DMA_GET_DESC() HAL_DMA_GET_DESC0() #define HAL_NV_DMA_SET_ADDR(a) HAL_DMA_SET_ADDR_DESC0((a))/* ------------------------------------------------------------------------------------------------* Macros* ------------------------------------------------------------------------------------------------*//* ----------- Cache Prefetch control ---------- */ #define PREFETCH_ENABLE() st( FCTL = 0x08; ) #define PREFETCH_DISABLE() st( FCTL = 0x04; )/* ----------- Board Initialization ---------- */ #if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && !defined (HAL_PA_LNA_CC2590)#define HAL_BOARD_INIT() \ { \uint16 i; \\SLEEPCMD &= ~OSC_PD; /* turn on 16MHz RC and 32MHz XOSC */ \while (!(SLEEPSTA & XOSC_STB)); /* wait for 32MHz XOSC stable */ \asm("NOP"); /* chip bug workaround */ \for (i=0; i<504; i++) asm("NOP"); /* Require 63us delay for all revs */ \CLKCONCMD = (CLKCONCMD_32MHZ | OSC_32KHZ); /* Select 32MHz XOSC and the source for 32K clock */ \while (CLKCONSTA != (CLKCONCMD_32MHZ | OSC_32KHZ)); /* Wait for the change to be effective */ \SLEEPCMD |= OSC_PD; /* turn off 16MHz RC */ \\/* Turn on cache prefetch mode */ \PREFETCH_ENABLE(); \\/* set direction for GPIO outputs */ \LED1_DDR |= LED1_BV; \LED2_DDR |= LED2_BV; \LED3_DDR |= LED3_BV; \\/* configure tristates */ \/*P0INP |= PUSH2_BV; luke*/ \ }#elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) || defined (HAL_PA_LNA_CC2590)#define HAL_BOARD_INIT() \ { \uint16 i; \\SLEEPCMD &= ~OSC_PD; /* turn on 16MHz RC and 32MHz XOSC */ \while (!(SLEEPSTA & XOSC_STB)); /* wait for 32MHz XOSC stable */ \asm("NOP"); /* chip bug workaround */ \for (i=0; i<504; i++) asm("NOP"); /* Require 63us delay for all revs */ \CLKCONCMD = (CLKCONCMD_32MHZ | OSC_32KHZ); /* Select 32MHz XOSC and the source for 32K clock */ \while (CLKCONSTA != (CLKCONCMD_32MHZ | OSC_32KHZ)); /* Wait for the change to be effective */ \SLEEPCMD |= OSC_PD; /* turn off 16MHz RC */ \\/* Turn on cache prefetch mode */ \PREFETACH_ENABLE(); \\/* set direction for GPIO outputs */ \LED1_DDR |= LED1_BV; \\/* Set PA/LNA HGM control P0_7 */ \P0DIR |= BV(7); \\/* configure tristates */ \/* luke P0INP |= PUSH2_BV; */ \ }#endif/* ----------- Debounce ---------- */ #define HAL_DEBOUNCE(expr) { int i; for (i=0; i<500; i++) { if (!(expr)) i = 0; } }/* ----------- Push Buttons ---------- */ #define HAL_PUSH_BUTTON1() (PUSH1_POLARITY (PUSH1_SBIT)) #define HAL_PUSH_BUTTON2() (PUSH2_POLARITY (PUSH2_SBIT)) #define HAL_PUSH_BUTTON3() (0) #define HAL_PUSH_BUTTON4() (0) #define HAL_PUSH_BUTTON5() (0) #define HAL_PUSH_BUTTON6() (0)/* ----------- LED's ---------- */ #if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && !defined (HAL_PA_LNA_CC2590)#define HAL_TURN_OFF_LED1() st( LED1_SBIT = LED1_POLARITY (0); )#define HAL_TURN_OFF_LED2() st( LED2_SBIT = LED2_POLARITY (0); )#define HAL_TURN_OFF_LED3() st( LED3_SBIT = LED3_POLARITY (0); )#define HAL_TURN_OFF_LED4() HAL_TURN_OFF_LED1()#define HAL_TURN_ON_LED1() st( LED1_SBIT = LED1_POLARITY (1); )#define HAL_TURN_ON_LED2() st( LED2_SBIT = LED2_POLARITY (1); )#define HAL_TURN_ON_LED3() st( LED3_SBIT = LED3_POLARITY (1); )#define HAL_TURN_ON_LED4() HAL_TURN_ON_LED1()#define HAL_TOGGLE_LED1() st( if (LED1_SBIT) { LED1_SBIT = 0; } else { LED1_SBIT = 1;} )#define HAL_TOGGLE_LED2() st( if (LED2_SBIT) { LED2_SBIT = 0; } else { LED2_SBIT = 1;} )#define HAL_TOGGLE_LED3() st( if (LED3_SBIT) { LED3_SBIT = 0; } else { LED3_SBIT = 1;} )#define HAL_TOGGLE_LED4() HAL_TOGGLE_LED1()#define HAL_STATE_LED1() (LED1_POLARITY (LED1_SBIT))#define HAL_STATE_LED2() (LED2_POLARITY (LED2_SBIT))#define HAL_STATE_LED3() (LED3_POLARITY (LED3_SBIT))#define HAL_STATE_LED4() HAL_STATE_LED1()#elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) || defined (HAL_PA_LNA_CC2590)#define HAL_TURN_OFF_LED1() st( LED1_SBIT = LED1_POLARITY (0); )#define HAL_TURN_OFF_LED2() HAL_TURN_OFF_LED1()#define HAL_TURN_OFF_LED3() HAL_TURN_OFF_LED1()#define HAL_TURN_OFF_LED4() HAL_TURN_OFF_LED1()#define HAL_TURN_ON_LED1() st( LED1_SBIT = LED1_POLARITY (1); )#define HAL_TURN_ON_LED2() HAL_TURN_ON_LED1()#define HAL_TURN_ON_LED3() HAL_TURN_ON_LED1()#define HAL_TURN_ON_LED4() HAL_TURN_ON_LED1()#define HAL_TOGGLE_LED1() st( if (LED1_SBIT) { LED1_SBIT = 0; } else { LED1_SBIT = 1;} )#define HAL_TOGGLE_LED2() HAL_TOGGLE_LED1()#define HAL_TOGGLE_LED3() HAL_TOGGLE_LED1()#define HAL_TOGGLE_LED4() HAL_TOGGLE_LED1()#define HAL_STATE_LED1() (LED1_POLARITY (LED1_SBIT))#define HAL_STATE_LED2() HAL_STATE_LED1()#define HAL_STATE_LED3() HAL_STATE_LED1()#define HAL_STATE_LED4() HAL_STATE_LED1()#endif/* ----------- XNV ---------- */ #define XNV_SPI_BEGIN() st(P1_3 = 0;) #define XNV_SPI_TX(x) st(U1CSR &= ~0x02; U1DBUF = (x);) #define XNV_SPI_RX() U1DBUF #define XNV_SPI_WAIT_RXRDY() st(while (!(U1CSR & 0x02));) #define XNV_SPI_END() st(P1_3 = 1;)// The TI reference design uses UART1 Alt. 2 in SPI mode. #define XNV_SPI_INIT() \ st( \/* Mode select UART1 SPI Mode as master. */\U1CSR = 0; \\/* Setup for 115200 baud. */\U1GCR = 11; \U1BAUD = 216; \\/* Set bit order to MSB */\U1GCR |= BV(5); \\/* Set UART1 I/O to alternate 2 location on P1 pins. */\PERCFG |= 0x02; /* U1CFG */\\/* Select peripheral function on I/O pins but SS is left as GPIO for separate control. */\P1SEL |= 0xE0; /* SELP1_[7:4] */\/* P1.1,2,3: reset, LCD CS, XNV CS. */\P1SEL &= ~0x0E; \P1 |= 0x0E; \P1_1 = 0; \P1DIR |= 0x0E; \\/* Give UART1 priority over Timer3. */\P2SEL &= ~0x20; /* PRI2P1 */\\/* When SPI config is complete, enable it. */\U1CSR |= 0x40; \/* Release XNV reset. */\P1_1 = 1; \ )/* ------------------------------------------------------------------------------------------------* Driver Configuration* ------------------------------------------------------------------------------------------------*//* Set to TRUE enable H/W TIMER usage, FALSE disable it */ #ifndef HAL_TIMER #define HAL_TIMER FALSE #endif/* Set to TRUE enable ADC usage, FALSE disable it */ #ifndef HAL_ADC #define HAL_ADC TRUE #endif/* Set to TRUE enable DMA usage, FALSE disable it */ #ifndef HAL_DMA #define HAL_DMA TRUE #endif/* Set to TRUE enable Flash access, FALSE disable it */ #ifndef HAL_FLASH #define HAL_FLASH TRUE #endif/* Set to TRUE enable AES usage, FALSE disable it */ #ifndef HAL_AES #define HAL_AES TRUE #endif#ifndef HAL_AES_DMA #define HAL_AES_DMA TRUE #endif/* Set to TRUE enable LCD usage, FALSE disable it */ #ifndef HAL_LCD #define HAL_LCD TRUE #endif/* Set to TRUE enable LED usage, FALSE disable it */ #ifndef HAL_LED #define HAL_LED TRUE #endif #if (!defined BLINK_LEDS) && (HAL_LED == TRUE) #define BLINK_LEDS #endif/* Set to TRUE enable KEY usage, FALSE disable it */ #ifndef HAL_KEY #define HAL_KEY TRUE #endif/* Set to TRUE enable UART usage, FALSE disable it */ #ifndef HAL_UART #if (defined ZAPP_P1) || (defined ZAPP_P2) || (defined ZTOOL_P1) || (defined ZTOOL_P2) #define HAL_UART TRUE #else #define HAL_UART FALSE #endif #endif#if HAL_UART // Always prefer to use DMA over ISR. #if HAL_DMA #ifndef HAL_UART_DMA #if (defined ZAPP_P1) || (defined ZTOOL_P1) #define HAL_UART_DMA 1 #elif (defined ZAPP_P2) || (defined ZTOOL_P2) #define HAL_UART_DMA 2 #else #define HAL_UART_DMA 1 #endif #endif #define HAL_UART_ISR 0 #else #ifndef HAL_UART_ISR #if (defined ZAPP_P1) || (defined ZTOOL_P1) #define HAL_UART_ISR 1 #elif (defined ZAPP_P2) || (defined ZTOOL_P2) #define HAL_UART_ISR 2 #else #define HAL_UART_ISR 1 #endif #endif #define HAL_UART_DMA 0 #endif// Used to set P2 priority - USART0 over USART1 if both are defined. #if ((HAL_UART_DMA == 1) || (HAL_UART_ISR == 1)) #define HAL_UART_PRIPO 0x00 #else #define HAL_UART_PRIPO 0x40 #endif#else #define HAL_UART_DMA 0 #define HAL_UART_ISR 0 #endif/******************************************************************************************************* */ #endif

hal_key.h

/**************************************************************************************************Filename: hal_key.hRevised: $Date: 2007-07-06 10:42:24 -0700 (Fri, 06 Jul 2007) $Revision: $Revision: 13579 $Description: This file contains the interface to the KEY Service.Copyright 2005-2007 Texas Instruments Incorporated. All rights reserved.IMPORTANT: Your use of this Software is limited to those specific rightsgranted under the terms of a software license agreement between the userwho downloaded the software, his/her employer (which must be your employer)and Texas Instruments Incorporated (the "License"). You may not use thisSoftware unless you agree to abide by the terms of the License. The Licenselimits your use, and you acknowledge, that the Software may not be modified,copied or distributed unless embedded on a Texas Instruments microcontrolleror used solely and exclusively in conjunction with a Texas Instruments radiofrequency transceiver, which is integrated into your product. Other than forthe foregoing purpose, you may not use, reproduce, copy, prepare derivativeworks of, modify, distribute, perform, display or sell this Software and/orits documentation for any purpose.YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION AREPROVIDED 揂S IS?WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALLTEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHERLEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSESINCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVEOR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENTOF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.Should you have any questions regarding your right to use this Software,contact Texas Instruments Incorporated at www.TI.com. **************************************************************************************************/#ifndef HAL_KEY_H #define HAL_KEY_H#ifdef __cplusplus extern "C" { #endif/*************************************************************************************************** INCLUDES**************************************************************************************************/ #include "hal_board.h"/*************************************************************************************************** MACROS**************************************************************************************************//*************************************************************************************************** CONSTANTS**************************************************************************************************//* Interrupt option - Enable or disable */ #define HAL_KEY_INTERRUPT_DISABLE 0x00 #define HAL_KEY_INTERRUPT_ENABLE 0x01/* Key state - shift or nornal */ #define HAL_KEY_STATE_NORMAL 0x00 #define HAL_KEY_STATE_SHIFT 0x01/* Switches (keys) */ #define HAL_KEY_SW_1 0x01 // Joystick up #define HAL_KEY_SW_2 0x02 // Joystick right #define HAL_KEY_SW_5 0x04 // Joystick center #define HAL_KEY_SW_4 0x08 // Joystick left #define HAL_KEY_SW_3 0x10 // Joystick down #define HAL_KEY_SW_6 0x20 // Button S1 if available #define HAL_KEY_SW_7 0x40 // Button S2 if available/* Joystick */ #define HAL_KEY_UP 0x01 // Joystick up #define HAL_KEY_RIGHT 0x02 // Joystick right #define HAL_KEY_CENTER 0x04 // Joystick center #define HAL_KEY_LEFT 0x08 // Joystick left #define HAL_KEY_DOWN 0x10 // Joystick down/*************************************************************************************************** TYPEDEFS**************************************************************************************************/ typedef void (*halKeyCBack_t) (uint8 keys, uint8 state);/*************************************************************************************************** GLOBAL VARIABLES**************************************************************************************************/ extern bool Hal_KeyIntEnable;/*************************************************************************************************** FUNCTIONS - API**************************************************************************************************//** Initialize the Key Service*/ extern void HalKeyInit( void );/** Configure the Key Service*/ extern void HalKeyConfig( bool interruptEnable, const halKeyCBack_t cback);/** Read the Key status*/ extern uint8 HalKeyRead( void);/** Enter sleep mode, store important values*/ extern void HalKeyEnterSleep ( void );/** Exit sleep mode, retore values*/ extern uint8 HalKeyExitSleep ( void );/** This is for internal used by hal_driver*/ extern void HalKeyPoll ( void );/** This is for internal used by hal_sleep*/ extern bool HalKeyPressed( void );/************************************************************************************************** **************************************************************************************************/#ifdef __cplusplus } #endif#endif

hal_key.c

/**************************************************************************************************Filename: hal_key.cRevised: $Date: 2008-12-15 07:19:03 -0800 (Mon, 15 Dec 2008) $Revision: $Revision: 18611 $Description: This file contains the interface to the HAL KEY Service.Copyright 2006-2007 Texas Instruments Incorporated. All rights reserved.IMPORTANT: Your use of this Software is limited to those specific rightsgranted under the terms of a software license agreement between the userwho downloaded the software, his/her employer (which must be your employer)and Texas Instruments Incorporated (the "License"). You may not use thisSoftware unless you agree to abide by the terms of the License. The Licenselimits your use, and you acknowledge, that the Software may not be modified,copied or distributed unless embedded on a Texas Instruments microcontrolleror used solely and exclusively in conjunction with a Texas Instruments radiofrequency transceiver, which is integrated into your product. Other than forthe foregoing purpose, you may not use, reproduce, copy, prepare derivativeworks of, modify, distribute, perform, display or sell this Software and/orits documentation for any purpose.YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION AREPROVIDED 揂S IS?WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALLTEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHERLEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSESINCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVEOR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENTOF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.Should you have any questions regarding your right to use this Software,contact Texas Instruments Incorporated at www.TI.com. **************************************************************************************************/ /*********************************************************************NOTE: If polling is used, the hal_driver task schedules the KeyRead()to occur every 100ms. This should be long enough to naturallydebounce the keys. The KeyRead() function remembers the keystate of the previous poll and will only return a non-zerovalue if the key state changes.NOTE: If interrupts are used, the KeyRead() function is scheduled25ms after the interrupt occurs by the ISR. This delay is usedfor key debouncing. The ISR disables any further Key interruptuntil KeyRead() is executed. KeyRead() will re-enable Keyinterrupts after executing. Unlike polling, when interruptsare enabled, the previous key state is not remembered. Thismeans that KeyRead() will return the current state of the keys(not a change in state of the keys).NOTE: If interrupts are used, the KeyRead() fucntion is scheduled bythe ISR. Therefore, the joystick movements will only be detectedduring a pushbutton interrupt caused by S1 or the center joystickpushbutton.NOTE: When a switch like S1 is pushed, the S1 signal goes from a normallyhigh state to a low state. This transition is typically clean. Theduration of the low state is around 200ms. When the signal returnsto the high state, there is a high likelihood of signal bounce, whichcauses a unwanted interrupts. Normally, we would set the interruptedge to falling edge to generate an interrupt when S1 is pushed, butbecause of the signal bounce, it is better to set the edge to risingedge to generate an interrupt when S1 is released. The debounce logiccan then filter out the signal bounce. The result is that we typicallyget only 1 interrupt per button push. This mechanism is not totallyfoolproof because occasionally, signal bound occurs during the fallingedge as well. A similar mechanism is used to handle the joystickpushbutton on the DB. For the EB, we do not have independent controlof the interrupt edge for the S1 and center joystick pushbutton. Asa result, only one or the other pushbuttons work reasonably well withinterrupts. The default is the make the S1 switch on the EB work morereliably.*********************************************************************//*************************************************************************************************** INCLUDES**************************************************************************************************/ #include "hal_mcu.h" #include "hal_defs.h" #include "hal_types.h" #include "hal_drivers.h" #include "hal_adc.h" #include "hal_key.h" #include "osal.h"#if (defined HAL_KEY) && (HAL_KEY == TRUE)/*************************************************************************************************** MACROS**************************************************************************************************//*************************************************************************************************** CONSTANTS**************************************************************************************************/ #define HAL_KEY_RISING_EDGE 0 #define HAL_KEY_FALLING_EDGE 1#define HAL_KEY_DEBOUNCE_VALUE 25 #define HAL_KEY_POLLING_VALUE 100/* CPU port interrupt */ #define HAL_KEY_CPU_PORT_0_IF P0IF #define HAL_KEY_CPU_PORT_2_IF P2IF/* SW_6 is at P0.1 官方 #define HAL_KEY_SW_6_PORT P0 #define HAL_KEY_SW_6_BIT BV(1) #define HAL_KEY_SW_6_SEL P0SEL #define HAL_KEY_SW_6_DIR P0DIR*//* SW_6 is at P0.4 luke */ #define HAL_KEY_SW_6_PORT P0 #define HAL_KEY_SW_6_BIT BV(4) #define HAL_KEY_SW_6_SEL P0SEL #define HAL_KEY_SW_6_DIR P0DIR/* edge interrupt */ #define HAL_KEY_SW_6_EDGEBIT BV(0) #define HAL_KEY_SW_6_EDGE HAL_KEY_FALLING_EDGE/* SW_6 interrupts */ #define HAL_KEY_SW_6_IEN IEN1 /* CPU interrupt mask register */ #define HAL_KEY_SW_6_IENBIT BV(5) /* Mask bit for all of Port_0 */ #define HAL_KEY_SW_6_ICTL P0IEN /* Port Interrupt Control register */ #define HAL_KEY_SW_6_ICTLBIT BV(1) /* P0IEN - P0.1 enable/disable bit */ #define HAL_KEY_SW_6_PXIFG P0IFG /* Interrupt flag at source *//* Joy stick move at P2.0 luke*/ #define HAL_KEY_JOY_MOVE_PORT 0//P2 #define HAL_KEY_JOY_MOVE_BIT 0//BV(0) #define HAL_KEY_JOY_MOVE_SEL 0//P2SEL #define HAL_KEY_JOY_MOVE_DIR 0//P2DIR/* edge interrupt */ #define HAL_KEY_JOY_MOVE_EDGEBIT BV(3) #define HAL_KEY_JOY_MOVE_EDGE HAL_KEY_FALLING_EDGE/* Joy move interrupts */ #define HAL_KEY_JOY_MOVE_IEN IEN2 /* CPU interrupt mask register */ #define HAL_KEY_JOY_MOVE_IENBIT BV(1) /* Mask bit for all of Port_2 */ #define HAL_KEY_JOY_MOVE_ICTL P2IEN /* Port Interrupt Control register */ #define HAL_KEY_JOY_MOVE_ICTLBIT BV(0) /* P2IENL - P2.0<->P2.3 enable/disable bit */ #define HAL_KEY_JOY_MOVE_PXIFG P2IFG /* Interrupt flag at source */#define HAL_KEY_JOY_CHN HAL_ADC_CHANNEL_6/*************************************************************************************************** TYPEDEFS**************************************************************************************************//*************************************************************************************************** GLOBAL VARIABLES**************************************************************************************************/ static uint8 halKeySavedKeys; /* used to store previous key state in polling mode */ static halKeyCBack_t pHalKeyProcessFunction; static uint8 HalKeyConfigured; bool Hal_KeyIntEnable; /* interrupt enable/disable flag *//*************************************************************************************************** FUNCTIONS - Local**************************************************************************************************/ void halProcessKeyInterrupt(void); uint8 halGetJoyKeyInput(void);/*************************************************************************************************** FUNCTIONS - API**************************************************************************************************//*************************************************************************************************** @fn HalKeyInit** @brief Initilize Key Service** @param none** @return None**************************************************************************************************/ void HalKeyInit( void ) {/* Initialize previous key to 0 */halKeySavedKeys = 0;HAL_KEY_SW_6_SEL &= ~(HAL_KEY_SW_6_BIT); /* Set pin function to GPIO */HAL_KEY_SW_6_DIR &= ~(HAL_KEY_SW_6_BIT); /* Set pin direction to Input *///HAL_KEY_JOY_MOVE_SEL &= ~(HAL_KEY_JOY_MOVE_BIT); /* Set pin function to GPIO *///HAL_KEY_JOY_MOVE_DIR &= ~(HAL_KEY_JOY_MOVE_BIT); /* Set pin direction to Input *//* Initialize callback function */pHalKeyProcessFunction = NULL;/* Start with key is not configured */HalKeyConfigured = FALSE; }/*************************************************************************************************** @fn HalKeyConfig** @brief Configure the Key serivce** @param interruptEnable - TRUE/FALSE, enable/disable interrupt* cback - pointer to the CallBack function** @return None**************************************************************************************************/ void HalKeyConfig (bool interruptEnable, halKeyCBack_t cback) {/* Enable/Disable Interrupt or */Hal_KeyIntEnable = interruptEnable;/* Register the callback fucntion */pHalKeyProcessFunction = cback;/* Determine if interrupt is enable or not */if (Hal_KeyIntEnable){/* Rising/Falling edge configuratinn */PICTL &= ~(HAL_KEY_SW_6_EDGEBIT); /* Clear the edge bit *//* For falling edge, the bit must be set. */#if (HAL_KEY_SW_6_EDGE == HAL_KEY_FALLING_EDGE)PICTL |= HAL_KEY_SW_6_EDGEBIT;#endif/* Interrupt configuration:* - Enable interrupt generation at the port* - Enable CPU interrupt* - Clear any pending interrupt*/HAL_KEY_SW_6_ICTL |= HAL_KEY_SW_6_ICTLBIT;HAL_KEY_SW_6_IEN |= HAL_KEY_SW_6_IENBIT;HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT);/* Rising/Falling edge configuratinn */HAL_KEY_JOY_MOVE_ICTL &= ~(HAL_KEY_JOY_MOVE_EDGEBIT); /* Clear the edge bit *//* For falling edge, the bit must be set. */#if (HAL_KEY_JOY_MOVE_EDGE == HAL_KEY_FALLING_EDGE)HAL_KEY_JOY_MOVE_ICTL |= HAL_KEY_JOY_MOVE_EDGEBIT;#endif/* Interrupt configuration:* - Enable interrupt generation at the port* - Enable CPU interrupt* - Clear any pending interrupt*/HAL_KEY_JOY_MOVE_ICTL |= HAL_KEY_JOY_MOVE_ICTLBIT;HAL_KEY_JOY_MOVE_IEN |= HAL_KEY_JOY_MOVE_IENBIT;HAL_KEY_JOY_MOVE_PXIFG = ~(HAL_KEY_JOY_MOVE_BIT);/* Do this only after the hal_key is configured - to work with sleep stuff */if (HalKeyConfigured == TRUE){osal_stop_timerEx( Hal_TaskID, HAL_KEY_EVENT); /* Cancel polling if active */}}else /* Interrupts NOT enabled */{HAL_KEY_SW_6_ICTL &= ~(HAL_KEY_SW_6_ICTLBIT); /* don't generate interrupt */HAL_KEY_SW_6_IEN &= ~(HAL_KEY_SW_6_IENBIT); /* Clear interrupt enable bit */osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_POLLING_VALUE); /* Kick off polling */}/* Key now is configured */HalKeyConfigured = TRUE; }/*************************************************************************************************** @fn HalKeyRead** @brief Read the current value of a key** @param None** @return keys - current keys status**************************************************************************************************/ uint8 HalKeyRead ( void ) {uint8 keys = 0;#ifdef HAL_BOARD_CC2530EB_REV17if ( (HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT)) /* Key is active high */ #elif defined (HAL_BOARD_CC2530EB_REV13)if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT)) /* Key is active low */ #endif{keys |= HAL_KEY_SW_6;}if ((HAL_KEY_JOY_MOVE_PORT & HAL_KEY_JOY_MOVE_BIT)) /* Key is active low */{//keys |= halGetJoyKeyInput();}return keys; }/*************************************************************************************************** @fn HalKeyPoll** @brief Called by hal_driver to poll the keys** @param None** @return None**************************************************************************************************/ void HalKeyPoll (void) {uint8 keys = 0;if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT)) /* Key is active low */{keys |= HAL_KEY_SW_6;}if ((HAL_KEY_JOY_MOVE_PORT & HAL_KEY_JOY_MOVE_BIT)) /* Key is active HIGH */{//keys = halGetJoyKeyInput();}/* If interrupts are not enabled, previous key status and current key status* are compared to find out if a key has changed status.*/if (!Hal_KeyIntEnable){if (keys == halKeySavedKeys){/* Exit - since no keys have changed */return;}/* Store the current keys for comparation next time */halKeySavedKeys = keys;}else{/* Key interrupt handled here */}/* Invoke Callback if new keys were depressed */if (keys && (pHalKeyProcessFunction)){(pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL);} }/*************************************************************************************************** @fn halGetJoyKeyInput** @brief Map the ADC value to its corresponding key.** @param None** @return keys - current joy key status**************************************************************************************************/ uint8 halGetJoyKeyInput(void) {/* The joystick control is encoded as an analog voltage.* Read the JOY_LEVEL analog value and map it to joy movement.*/uint8 adc;uint8 ksave0 = 0;uint8 ksave1;/* Keep on reading the ADC until two consecutive key decisions are the same. */do{ksave1 = ksave0; /* save previouse key reading */adc = HalAdcRead (HAL_KEY_JOY_CHN, HAL_ADC_RESOLUTION_8);if ((adc >= 2) && (adc <= 38)){ksave0 |= HAL_KEY_UP;}else if ((adc >= 74) && (adc <= 88)){ksave0 |= HAL_KEY_RIGHT;}else if ((adc >= 60) && (adc <= 73)){ksave0 |= HAL_KEY_LEFT;}else if ((adc >= 39) && (adc <= 59)){ksave0 |= HAL_KEY_DOWN;}else if ((adc >= 89) && (adc <= 100)){ksave0 |= HAL_KEY_CENTER;}} while (ksave0 != ksave1);return ksave0; }/*************************************************************************************************** @fn halProcessKeyInterrupt** @brief Checks to see if it's a valid key interrupt, saves interrupt driven key states for* processing by HalKeyRead(), and debounces keys by scheduling HalKeyRead() 25ms later.** @param** @return**************************************************************************************************/ void halProcessKeyInterrupt (void) {bool valid=FALSE;if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT) /* Interrupt Flag has been set */{HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT); /* Clear Interrupt Flag */valid = TRUE;}if (HAL_KEY_JOY_MOVE_PXIFG & HAL_KEY_JOY_MOVE_BIT) /* Interrupt Flag has been set */{HAL_KEY_JOY_MOVE_PXIFG = ~(HAL_KEY_JOY_MOVE_BIT); /* Clear Interrupt Flag */valid = TRUE;}if (valid){osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE);} }/*************************************************************************************************** @fn HalKeyEnterSleep** @brief - Get called to enter sleep mode** @param** @return**************************************************************************************************/ void HalKeyEnterSleep ( void ) { }/*************************************************************************************************** @fn HalKeyExitSleep** @brief - Get called when sleep is over** @param** @return - return saved keys**************************************************************************************************/ uint8 HalKeyExitSleep ( void ) {/* Wake up and read keys */return ( HalKeyRead () ); }/**************************************************************************************************** INTERRUPT SERVICE ROUTINE***************************************************************************************************//*************************************************************************************************** @fn halKeyPort0Isr** @brief Port0 ISR** @param** @return**************************************************************************************************/ HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR ) {if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT){halProcessKeyInterrupt();}/*Clear the CPU interrupt flag for Port_0PxIFG has to be cleared before PxIF*/HAL_KEY_SW_6_PXIFG = 0;HAL_KEY_CPU_PORT_0_IF = 0; }/*************************************************************************************************** @fn halKeyPort2Isr** @brief Port2 ISR** @param** @return**************************************************************************************************/ HAL_ISR_FUNCTION( halKeyPort2Isr, P2INT_VECTOR ) {if (HAL_KEY_JOY_MOVE_PXIFG & HAL_KEY_JOY_MOVE_BIT){halProcessKeyInterrupt();}/*Clear the CPU interrupt flag for Port_2PxIFG has to be cleared before PxIFNotes: P2_1 and P2_2 are debug lines.*/HAL_KEY_JOY_MOVE_PXIFG = 0;HAL_KEY_CPU_PORT_2_IF = 0; }#elsevoid HalKeyInit(void){} void HalKeyConfig(bool interruptEnable, halKeyCBack_t cback){} uint8 HalKeyRead(void){ return 0;} void HalKeyPoll(void){}#endif /* HAL_KEY *//************************************************************************************************** **************************************************************************************************/

總結

以上是生活随笔為你收集整理的z-stac配置按键的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

色综合久久久久综合体桃花网 | 91精品国产入口 | 国产精品国产三级国产aⅴ9色 | av免费网站观看 | 中文在线资源 | 国产专区一 | 国产在线播放观看 | 久久综合9988久久爱 | 国产精品av免费观看 | 久久久久国 | 天天操夜夜曰 | 亚洲精品久久久蜜桃 | 国产中文在线观看 | 五月婷婷综合在线 | 久久撸在线视频 | 亚洲最新合集 | 欧美专区国产专区 | 一区二区精品在线观看 | 久久大片 | 午夜精品久久久久久久久久久久久久 | 国产中文字幕一区二区三区 | 欧洲亚洲激情 | 国产精品电影在线 | 精品亚洲二区 | 国产亚洲精品久久久久久移动网络 | 国产一级淫片免费看 | 亚洲一区二区三区精品在线观看 | 99国产精品视频免费观看一公开 | 免费一级片观看 | 国产福利一区二区三区在线观看 | 国产视频 亚洲视频 | 91视频在线国产 | 欧美精品乱码久久久久久按摩 | 91av在线免费观看 | 成人毛片久久 | 久久人人爽爽人人爽人人片av | 一区二区三区三区在线 | 免费在线观看国产黄 | 欧美一级免费 | 欧美日韩另类在线 | 成人av中文字幕 | 免费av网站在线看 | 中文字幕制服丝袜av久久 | 国产精品女同一区二区三区久久夜 | 丁香激情综合国产 | 天天爱天天舔 | 天天射天天射天天射 | 亚洲成人家庭影院 | 国产手机视频精品 | 久久精品2| 成年人在线免费看视频 | 99视频免费看 | 国产永久免费高清在线观看视频 | 夜夜爽夜夜操 | 精品视频在线视频 | 精品国产伦一区二区三区观看方式 | 日韩精品中文字幕有码 | 久久er99热精品一区二区三区 | 美女视频久久黄 | 日韩欧美国产视频 | 三级av在线免费观看 | 国产一二三区av | 国产美女主播精品一区二区三区 | 中文字幕在线视频第一页 | 久久久久久高潮国产精品视 | 最近日本mv字幕免费观看 | 亚洲a成人v | 久久国语| 91在线视频导航 | 香蕉视频在线网站 | 亚洲最大在线视频 | 六月丁香色婷婷 | 中文字幕二区在线观看 | 丁香激情视频 | 综合激情伊人 | 久久草| 网站在线观看你们懂的 | 成 人 黄 色视频免费播放 | 91精品一区国产高清在线gif | 蜜桃久久久| 人人爱爱 | 亚洲国产一区二区精品专区 | 欧美一区二区免费在线观看 | 精品一区欧美 | 中文字幕资源在线 | 在线最新av | 97视频成人| 正在播放国产一区 | 五月精品| 高清免费在线视频 | 在线观看91精品视频 | 亚洲精品国精品久久99热一 | 成人久久久久久久久久 | 黄色一级片视频 | 久久91久久久久麻豆精品 | 国产精品久久久毛片 | 婷婷在线视频观看 | 成人黄色小说网 | 午夜视频在线网站 | 亚洲精品乱码久久久久久9色 | av在线播放不卡 | 久久久久久久久久久久影院 | av品善网 | 日韩毛片一区 | 国产午夜精品一区二区三区在线观看 | 精品播放 | 蜜臀av夜夜澡人人爽人人桃色 | 成人a级网站 | 欧美日韩高清一区二区 国产亚洲免费看 | 夜夜夜夜夜夜操 | 免费观看高清 | 久久99爱视频 | 免费看的毛片 | 日韩在线观看视频一区二区三区 | 中文在线最新版天堂 | 激情久久伊人 | 综合久久精品 | 五月婷婷综合久久 | 国产高清视频在线播放 | 不卡日韩av| 丁香影院在线 | 免费看黄色91 | 久久国产影院 | 国产精品刺激对白麻豆99 | 激情综合网在线观看 | 丁香狠狠| 久久精品视 | 国产剧情在线一区 | 最新av电影网站 | 亚洲毛片久久 | 国产玖玖视频 | 欧美另类亚洲 | 欧美日韩精品影院 | 成人免费大片黄在线播放 | 91精品无人成人www | 久热av| 国产成人香蕉 | h动漫中文字幕 | 日本精品二区 | 在线免费观看国产黄色 | 亚洲成人动漫在线观看 | www.夜夜操.com | 国产视频久久久久 | 国产h片在线观看 | 日韩黄色免费电影 | 日本午夜在线观看 | 97成人啪啪网| 国产专区在线 | 国产丝袜 | 亚洲综合成人在线 | 亚洲成人高清在线 | 91在线蜜桃臀 | 一级黄色片在线观看 | 成人av电影网址 | 在线天堂v| 欧美精品资源 | av中文字幕第一页 | 特级黄色一级 | 久久高清国产视频 | 99在线高清视频在线播放 | 国产美女在线免费观看 | www免费黄色| 2019天天干夜夜操 | 天天射天天 | 久久成人免费 | 三级小视频在线观看 | 一区二区三区久久 | 不卡在线一区 | 亚洲高清视频在线观看免费 | 99精品视频在线播放免费 | 免费看污污视频的网站 | 久久精品亚洲精品国产欧美 | 欧美日韩在线观看一区二区三区 | 免费美女久久99 | 国产一区二区久久精品 | 国产成人av | 日韩欧美网站 | 久久久久欠精品国产毛片国产毛生 | va视频在线观看 | 深夜福利视频一区二区 | 亚洲丝袜中文 | 久久久黄色av | 狠狠狠狠狠色综合 | 国产人成在线视频 | 免费看日韩 | 99九九免费视频 | 超碰在线98 | 久久国产成人午夜av影院潦草 | 婷婷去俺也去六月色 | 国内小视频在线观看 | 色99之美女主播在线视频 | 亚洲日本黄色 | 一本一本久久a久久 | 成人免费一级片 | 国产69精品久久久久久 | a视频免费在线观看 | 亚洲另类在线视频 | 成全在线视频免费观看 | 亚洲精品女人久久久 | 午夜黄色大片 | 97av在线 | 狠狠色狠狠色合久久伊人 | 日韩黄色免费在线观看 | 成人av资源| 最新99热| 99久久999久久久精玫瑰 | 天天操天天射天天添 | 超碰在线9| 在线观看v片 | 国产视频 亚洲精品 | 天天草天天插 | 一级黄网| 亚洲国产精品推荐 | 中文字幕国产一区二区 | 一区二区欧美在线观看 | 91久久电影 | 99精品国产亚洲 | 国产精品久久 | 在线成人欧美 | 国产成人精品综合久久久久99 | 丁香五月缴情综合网 | 久久久69 | 中文字幕在线资源 | 免费高清男女打扑克视频 | 久久免费av电影 | 日本中文字幕在线免费观看 | 久久久久国产精品一区 | 色婷婷av在线 | 国内精品中文字幕 | 99久久精品网 | 狠狠狠操 | 在线看日韩 | 日本性久久 | 69av视频在线观看 | 欧美黑吊大战白妞欧美 | 91成熟丰满女人少妇 | 成人午夜免费福利 | 激情网在线观看 | 日韩精品一区二区三区中文字幕 | 天天色天天 | 精品国产一区二区三区av性色 | 国产精品入口传媒 | 中日韩在线视频 | 在线成人免费电影 | 日韩中文字幕视频在线观看 | 婷婷色中文字幕 | 欧美色噜噜| 国产乱视频 | 久久精品国产免费观看 | 久久久三级视频 | 国产亚洲亚洲 | 手机av片 | 久草免费在线观看视频 | 欧美日韩中文国产 | 亚洲小视频在线观看 | 日韩动漫免费观看高清完整版在线观看 | 伊人一级 | 天天天天天操 | 久久人人爽人人爽人人片av免费 | 色资源网在线观看 | 91视频久久久 | 国产在线视频在线观看 | 国产乱码精品一区二区蜜臀 | 国产精品video | 国产一级视频免费看 | 十八岁免进欧美 | 成人在线你懂得 | 国产精品精品久久久久久 | 欧美一二三视频 | 中文字幕国产在线 | 91av大全| 九九九热| 精品亚洲欧美无人区乱码 | 精品国产精品一区二区夜夜嗨 | 久久草视频 | 免费福利在线播放 | 中中文字幕av在线 | 亚洲欧美日韩在线看 | 日韩精品免费一区二区三区 | 久久99国产综合精品免费 | 欧美日韩中文字幕在线视频 | www国产亚洲 | 欧美激情视频在线观看免费 | 日韩理论电影在线 | 中文字幕资源在线观看 | 久久久久久久久福利 | av在线一二三区 | 午夜精品久久久 | 天天在线视频色 | 丁香久久| 国产亚洲精品久久久久久大师 | 免费亚洲视频在线观看 | 一本一本久久a久久精品综合妖精 | 国产精品第二页 | 在线观看视频国产一区 | 美女一二三区 | 久青草影院 | 免费高清在线观看成人 | 欧美肥妇free | 91免费观看国产 | 在线观看成人一级片 | 国产淫片免费看 | 国精产品一二三线999 | 欧美久久久久久久 | 亚洲三级黄 | 五月婷激情| 色综合天天综合网国产成人网 | 欧美一区二区三区激情视频 | www九九热 | 国内精品小视频 | 青草视频在线播放 | 97免费在线观看 | 91污污视频在线观看 | 黄色软件视频大全免费下载 | 日韩精品aaa | 国产色婷婷在线 | 婷婷丁香av | 天天躁天天操 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 美女视频网站久久 | 国产精品精品国产婷婷这里av | 91中文字幕在线 | 美女在线免费观看视频 | 欧美日韩二区三区 | 亚洲日本中文字幕在线观看 | 毛片随便看 | 欧美日韩色婷婷 | 国色天香永久免费 | 国产一级片免费视频 | 久久一区二区三区国产精品 | 国产黄色一级大片 | 青草视频在线免费 | 九九视频这里只有精品 | 精品中文字幕在线播放 | 在线观看中文字幕一区二区 | 天天射,天天干 | 国产大陆亚洲精品国产 | 美女精品网站 | 一区二区三区四区五区在线 | 色视频在线免费观看 | 中文字幕色在线 | 成人av手机在线 | 久久黄色影视 | 欧美精品免费在线 | 午夜性色 | 婷婷福利影院 | 色网站免费在线观看 | 在线免费av电影 | 韩国av免费在线观看 | 公开超碰在线 | 免费a v视频| 福利在线看片 | 中文资源在线播放 | 国内精品二区 | 91在线看片 | 国产成人黄色片 | 欧美日韩一区二区久久 | 一级黄色大片 | 天天操天天射天天插 | 国产麻豆电影在线观看 | 国产一级精品视频 | 成人免费中文字幕 | 免费av视屏| 天天做天天看 | 久久久亚洲麻豆日韩精品一区三区 | 91人人视频在线观看 | 在线视频一二三 | 2017狠狠干 | 日韩欧美在线观看一区二区 | 国产伦精品一区二区三区无广告 | 手机色站| 天天操天天色天天射 | 日韩亚洲在线视频 | 久在线观看视频 | 国产高清无线码2021 | 99久久久久久久久 | 久草在线观看 | 日本乱码在线 | 久久精品3 | 久久情爱| 久久精选 | 午夜在线免费视频 | 手机在线看永久av片免费 | 激情丁香 | 久草在线视频免赞 | 五月婷婷在线视频观看 | 色综合婷婷 | 久久男人免费视频 | 在线观看中文字幕第一页 | 伊人网av| 日韩在线字幕 | 波多野结衣一区三区 | 久久精品区 | 久久久久久久久久久黄色 | 中文字幕第一页在线播放 | 黄色精品国产 | 中文字幕大全 | 特级a老妇做爰全过程 | 国产va饥渴难耐女保洁员在线观看 | 国产精品午夜av | 午夜久久久影院 | 韩国在线一区 | 五月婷在线 | 麻豆视频在线免费观看 | 中文字幕在线有码 | 欧美日韩国产一区二区三区 | 在线观看亚洲免费视频 | 国产日韩一区在线 | 在线观看日韩视频 | 激情综合色综合久久综合 | 91最新地址永久入口 | 国产黄色精品在线 | 四虎影视精品永久在线观看 | 亚洲 欧美 国产 va在线影院 | 人人舔人人干 | 久久69av| 蜜臀91丨九色丨蝌蚪老版 | 日韩精品在线免费播放 | 天天操夜夜看 | 天天干天天看 | 日本不卡一区二区 | 成人网色 | 日本久草电影 | 91精品电影| 久久免视频 | 免费一级日韩欧美性大片 | 国产精品成久久久久 | 1024手机看片国产 | 在线观看中文字幕视频 | 激情图片qvod| 亚洲国产免费 | 久久视频免费在线观看 | av不卡中文字幕 | 日韩一区二区三区不卡 | 深爱婷婷网 | av一级网站| 欧美日韩亚洲精品在线 | 日韩av有码在线 | 国产 精品 资源 | 黄色a在线 | 最新av网址大全 | 国产免费高清视频 | 久久精品视频4 | 久久精品导航 | 在线一二三四区 | 欧美日韩国产精品一区二区三区 | 日韩日韩日韩日韩 | 在线观看黄a | 在线观看韩国av | 亚洲国产97在线精品一区 | 天天摸日日操 | 四虎免费在线观看 | 在线观看黄污 | 欧美美女视频在线观看 | 色婷婷视频在线观看 | 色哟哟国产精品 | 日本中文字幕在线观看 | 四虎在线观看视频 | 国产成人精品一区二区在线观看 | 成人h在线播放 | 奇米影视777四色米奇影院 | 日韩国产精品毛片 | 天天操夜夜摸 | 97av影院 | 日日摸日日添日日躁av | 日韩成人黄色 | 久久成人一区 | 午夜精品一区二区三区视频免费看 | 中文字幕视频观看 | 日韩av区 | 日韩视频 一区 | 豆豆色资源网xfplay | 色综合网在线 | 久久1电影院 | 精品一区二区免费在线观看 | 色狠狠综合天天综合综合 | 亚洲精品一区二区三区四区高清 | 精品日韩视频 | 国产在线最新 | 欧美日韩综合在线 | 欧美日韩不卡在线视频 | 久久综合九九 | 成人国产网站 | 伊人久久国产 | 就操操久久 | 一区二区三区精品在线视频 | 国产一级视频免费看 | 黄色网址在线播放 | 麻豆观看| 成人午夜性影院 | 三级视频国产 | 久久激情久久 | 在线a亚洲视频播放在线观看 | 美女视频久久久 | 91在线观 | 男女激情网址 | 在线观看黄色免费视频 | 成人久久久久久久久久 | 国产96在线视频 | 江苏妇搡bbbb搡bbbb | 色com| sesese图片| 日韩伦理片hd | 色丁香久久| 99精品久久99久久久久 | 免费网站黄 | 欧美另类一二三四区 | 伊人色播| 91网在线| 精品国产激情 | 免费看搞黄视频网站 | 免费黄色a级毛片 | 国产aa精品 | 精品亚洲午夜久久久久91 | 激情五月av| 国产成人一区二区三区在线观看 | 日韩av资源在线观看 | 国产在线p | 香蕉在线视频观看 | 国产又粗又猛又爽又黄的视频先 | 日韩欧美精品在线视频 | 久久国产精品免费 | 91mv.cool在线观看 | 一区二区三区三区在线 | 国产亚洲精品久久久网站好莱 | 午夜精品久久久久久久久久久久久久 | 不卡精品视频 | 伊人天天狠天天添日日拍 | 亚洲视频网站在线观看 | 久久尤物电影视频在线观看 | 国产一区二区三区高清播放 | 激情久久伊人 | 国产三级国产精品国产专区50 | www亚洲精品| 顶级bbw搡bbbb搡bbbb | 成人小视频在线播放 | 日韩免费视频观看 | 91成人精品观看 | 天天躁天天躁天天躁婷 | 免费99精品国产自在在线 | 亚洲日本精品视频 | 久久av免费 | 免费无遮挡动漫网站 | 国产精品久久久久久久久久久久冷 | 久久久久影视 | 一区二区电影网 | a视频在线观看 | 亚洲九九爱 | 中文字幕av免费观看 | 亚洲久草在线 | 国产精品久久久久久久午夜 | 欧美一级视频免费 | 国产一区二区影院 | 国产精品手机在线播放 | 亚洲综合成人专区片 | 麻豆首页| 天天干天天操天天 | 国产一区二区在线观看免费 | 久久精品视频日本 | 亚洲精品视频在线播放 | 丁香午夜 | 午夜av在线播放 | 国产九九九精品视频 | 日本久久成人中文字幕电影 | 欧美美女视频在线观看 | 亚洲黄色免费电影 | 91精品成人| 国偷自产中文字幕亚洲手机在线 | 成年人在线视频观看 | 久久久精品成人 | 久久99网站 | 27xxoo无遮挡动态视频 | 久久av免费观看 | 久久人人爽人人爽人人片av免费 | 欧美精品一区二区三区一线天视频 | 9797在线看片亚洲精品 | 国产精品麻豆果冻传媒在线播放 | 欧美黑人性猛交 | 99久久久久免费精品国产 | 国产精品人人做人人爽人人添 | 精久久久久 | www欧美色 | 国产91欧美 | 久久艹在线观看 | 久久久久久伊人 | 天天玩天天操天天射 | 久久视频二区 | 九九亚洲视频 | 国产精品尤物视频 | 99精品偷拍视频一区二区三区 | 久久视频国产 | 波多野结衣视频一区二区三区 | 精品美女久久久久 | 久久夜色精品国产欧美乱极品 | 天天色中文 | 精品一二| 97国产在线视频 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 丁香六月婷婷综合 | 日韩中文字幕在线看 | www视频在线播放 | 久久久久国产精品午夜一区 | 黄色小说在线观看视频 | 夜夜爽88888免费视频4848 | www.97视频 | 欧美了一区在线观看 | 久久精品一二三区白丝高潮 | 国产不卡片 | 久久久午夜精品理论片中文字幕 | 午夜精品在线看 | 日韩二级毛片 | 国产资源免费 | 99久久久国产精品免费99 | 91福利视频免费 | 亚洲资源片 | 夜夜操综合网 | 国产精品免费小视频 | 成年人免费在线观看网站 | 97超碰超碰 | 天天色天天草天天射 | 久草久草在线观看 | 啪啪免费视频网站 | 在线成人中文字幕 | 免费精品在线视频 | 热久久这里只有精品 | 干天天 | 精品美女久久久久久免费 | 国产精品久久中文字幕 | 视频成人 | 欧美三级在线播放 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 国产视频一区二区在线播放 | 黄污视频网站 | 午夜12点 | 91免费试看 | www.狠狠 | 国产精品网红直播 | 极品美女被弄高潮视频网站 | 88av网站| 91人人爱| 精品一区二区在线免费观看 | 最近免费中文字幕大全高清10 | 成在线播放 | 在线播放视频一区 | 欧美 日韩 视频 | 亚洲精品女人 | 99久久国产免费,99久久国产免费大片 | 91夜夜夜| 日韩欧美在线视频一区二区三区 | 精品在线一区二区 | 日本最大色倩网站www | 日韩中文字幕国产精品 | 日韩三级一区 | 99精品国产一区二区 | 欧美一级视频免费看 | 国产中文在线视频 | 成 人 黄 色 视频免费播放 | 在线观看免费国产小视频 | 国产最新网站 | 亚洲精品va| 色在线亚洲 | 精品国产伦一区二区三区观看体验 | 久久97精品 | 亚州天堂 | av成人在线观看 | 96超碰在线| 亚洲精品网站 | 91自拍视频在线 | 国产精品黄网站在线观看 | 国产黄在线播放 | 极品美女被弄高潮视频网站 | 在线观看黄色小视频 | 深爱激情久久 | 欧美激情va永久在线播放 | 九九免费在线观看视频 | 天天激情综合 | 伊甸园av在线 | 黄色在线观看www | 亚洲免费高清视频 | 久久9999久久免费精品国产 | 狠狠狠色丁香婷婷综合久久88 | 亚洲国产午夜视频 | 免费看毛片网站 | 国产高清不卡在线 | 天天干天天干天天色 | 一区二区亚洲精品 | 综合久久影院 | 丁香一区二区 | 色精品视频 | 久草在线99 | 8x8x在线观看视频 | av免费网 | 91精品亚洲影视在线观看 | 精品成人免费 | 国产亚洲精品久久久久久久久久 | 97人人视频| 久久精品1区2区 | 国产一级大片在线观看 | 97天堂 | 色吊丝在线永久观看最新版本 | 国产精品久久久久久久久久免费 | 91九色国产| 国产精品久久久久久久久久久免费 | 色综合a| 99久久这里只有精品 | av 一区二区三区 | 日韩av在线网站 | 国产黄色特级片 | 欧美日韩性 | 久草久热 | 911av视频| 九九视频精品免费 | 嫩小bbbb摸bbb摸bbb | 国产中文字幕一区二区 | 成人黄色小说网 | 六月婷婷久香在线视频 | 精品久久九九 | 亚洲高清资源 | 久久全国免费视频 | 五月天国产精品 | 91网站在线视频 | 色视频网页| 欧美在线观看视频 | 久久免费久久 | 日韩黄色免费电影 | 欧美日韩精品在线观看视频 | 在线免费av播放 | 久久久久久久久久影院 | 日韩在线视频看看 | 亚洲女欲精品久久久久久久18 | 精品毛片久久久久久 | 色五月激情五月 | 国产黄色在线网站 | 不卡av电影在线 | 99视频精品全部免费 在线 | 国产中出在线观看 | 久久久久久久久久久久国产精品 | 国产精品亚州 | 丁香六月在线观看 | 国产精品第2页 | 99色人| 人人爽人人澡人人添人人人人 | 日韩激情视频在线 | 欧美一区二视频在线免费观看 | 日韩精品免费专区 | 999久久久欧美日韩黑人 | 国产网站在线免费观看 | 久久激情视频 久久 | av在线播放网址 | 久久九九精品 | 91九色最新 | 射九九| 在线看成人 | 免费a网址 | 亚洲高清在线视频 | 中文字幕中文字幕在线中文字幕三区 | 欧美激情第一区 | 91麻豆国产 | 91av片 | 天天色棕合合合合合合 | 日本一区二区高清不卡 | 亚洲专区 国产精品 | 国产亚洲一区 | 亚洲国产视频直播 | 国产精品久久久久久久久蜜臀 | 99久久久久国产精品免费 | 色爱区综合激月婷婷 | 亚洲精品videossex少妇 | 亚洲成人资源网 | 欧美成人区| 久久伊人爱 | 免费在线观看av | 国产日韩在线观看一区 | a电影免费看 | 亚洲精品免费在线 | 国产 日韩 在线 亚洲 字幕 中文 | 日韩一区二区三区免费视频 | 日韩av高潮 | 成人精品一区二区三区电影免费 | 午夜精品久久久久久久99 | 人人澡人人爱 | 午夜久久久久久久久久久 | 黄色一级动作片 | 中文国产字幕 | 国产免费精彩视频 | 麻豆影视在线免费观看 | 日韩精品视频在线观看免费 | 久久亚洲私人国产精品 | 美女黄视频免费看 | 成人av高清在线 | ,久久福利影视 | 欧美淫aaa免费观看 日韩激情免费视频 | 在线观看深夜视频 | 亚洲伊人成综合网 | 国产一级电影在线 | 欧美日韩在线观看一区二区 | 福利视频入口 | 国产在线观看一 | 美女视频黄色免费 | 狠狠色丁香九九婷婷综合五月 | 国产高清av免费在线观看 | 日韩中文在线观看 | 久久成人免费 | 欧美日韩啪啪 | 欧美激情视频免费看 | 日韩视频欧美视频 | 岛国精品一区二区 | 成人一区在线观看 | 四川妇女搡bbbb搡bbbb搡 | 国产精品一区一区三区 | 国产99久久99热这里精品5 | 国产精品资源在线 | 毛片a级片 | 日本中文字幕电影在线免费观看 | 日韩免费在线网站 | 久草视频精品 | 黄污视频大全 | 91在线一区二区 | 天天爱天天插 | 久久99久国产精品黄毛片入口 | 人人超碰免费 | 日韩资源在线观看 | 久久精品综合视频 | 99精品国产aⅴ | 亚洲九九爱 | 一级全黄毛片 | 久久高清视频免费 | 在线观看亚洲免费视频 | 玖玖视频网 | 久久一区二区三区国产精品 | 亚洲国产成人高清精品 | 国产一级视屏 | 九九在线精品视频 | 精品国产一区二区三区蜜臀 | 91在线看黄 | 中文字幕二区在线观看 | 中文字幕一区二区三区乱码不卡 | 国产日韩视频在线观看 | av天天在线观看 | 国产成人精品一区二区三区免费 | 日日夜夜91| 五月婷婷一级片 | av大片免费在线观看 | 中文字幕在线高清 | 五月天中文字幕mv在线 | 国产成人99av超碰超爽 | 永久精品视频 | 香蕉久久久久久久 | 香蕉视频4aa | 久久国产精品免费看 | 日韩av电影国产 | 国产精品久久人 | 999国内精品永久免费视频 | 国产又粗又猛又色又黄网站 | 91黄色免费看 | 狠狠狠狠狠狠操 | 91看片网址| 国产精品欧美日韩在线观看 | 韩国av免费在线 | 探花视频在线观看免费 | 国产 视频 久久 | 欧美a级成人淫片免费看 | 精品在线观 | 亚洲婷婷网 | 久久久久这里只有精品 | 国产精品99久久久久的智能播放 | 欧美日韩免费视频 | 97在线精品国自产拍中文 | 51精品国自产在线 | 九九热免费视频在线观看 | 免费观看版 | 97av视频| 久久99久久99精品中文字幕 | 日狠狠| 国产精品免费观看网站 | 天天插综合| 成人免费一区二区三区在线观看 | 狠狠色狠狠色合久久伊人 | 国产精品毛片一区二区 | av专区在线 | 精精国产xxxx视频在线播放 | 91手机视频| 国产小视频国产精品 | 日本精品视频免费 | 胖bbbb搡bbbb擦bbbb | 91精品入口 | 国产99精品 | 日韩一级片网址 | 成人av午夜 | 999成人网| 丰满少妇在线观看资源站 | 99久久er热在这里只有精品66 | 国产精品6 | 国产黄| 日本久久久久久久久久 | 少妇性xxx | 可以免费观看的av片 | 欧美另类视频 | 欧美亚洲免费在线一区 | 视频国产在线观看18 | 成人一区在线观看 | 人人射| 免费三级a | 婷婷综合网 | 欧美日韩中文字幕在线视频 | 91精品久久久久久综合乱菊 | 国产视频一区在线免费观看 | av在线网站观看 | 毛片网站免费在线观看 | 色久天 | 日韩美精品视频 | 精品在线播放视频 | 国产福利av | 麻豆一二三精选视频 | 国内一级片在线观看 | 免费又黄又爽视频 | 中国美女一级看片 | 午夜av在线免费 | 又黄又爽免费视频 | 免费欧美精品 | 午夜美女福利 | 男女啪啪免费网站 | 99视频国产在线 | 91看片在线观看 | 91av视频在线观看免费 | 国产精品久久久久久婷婷天堂 | 日韩中文字幕网站 | 日韩av片无码一区二区不卡电影 | av中文字幕日韩 | 五月婷婷影视 | 久久精品国产一区二区三区 | av超碰在线 | 黄色免费网站下载 | 超碰在线资源 | 亚洲精品美女视频 | 久久免费激情视频 | 国产精品欧美一区二区 | 日本精品中文字幕 | 黄色成人影院 | 天天爱综合 | 男女精品久久 | 97成人超碰 | 超碰.com| 日本精品一区二区三区在线观看 | 精品国产一区二区三区在线 | 亚洲黄色一级电影 | 在线播放视频一区 | 99在线观看免费视频精品观看 | 国产精品对白一区二区三区 | 欧美精品你懂的 | 欧美福利视频 | 色婷婷色| 久久一区二区三区日韩 | 免费视频在线观看网站 | 在线免费性生活片 | 天天综合天天做 | 久久免费成人精品视频 | 亚洲人成影院在线 | 91精品日韩 | 国产精品美女毛片真酒店 | 中文字幕中文字幕在线一区 | 97国产大学生情侣酒店的特点 | 99视频在线 | 九九免费观看全部免费视频 | 亚洲欧美国产精品久久久久 | 超碰av在线 | 亚洲理论在线观看 | 亚洲精选在线观看 | 正在播放五月婷婷狠狠干 | 国产999精品久久久 免费a网站 | 久草在线最新免费 | 美女网站色 | 精品视频在线观看 | 三级黄色a| 国产精品99蜜臀久久不卡二区 | 成人av一区二区兰花在线播放 | 国产精品1区2区3区 久久免费视频7 | 在线播放日韩 | 视频在线观看国产 | 国产免费成人av | 国产精品毛片一区二区 | 在线免费观看国产精品 | 五月天婷亚洲天综合网鲁鲁鲁 | 日韩超碰 | 日韩视频图片 | 久久国产经典 | 精品自拍网 | ww视频在线观看 | 国产成人中文字幕 | 在线播放第一页 | 亚洲精品视频在线观看免费视频 | 视频国产在线观看18 | 伊人在线视频 | 亚洲aaa级| 日韩三级免费 | 国产精品亚洲综合久久 | 麻豆影视在线播放 | 亚洲高清不卡av |