栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

z-stac配置按键

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

z-stac配置按键

按键的定义一般有两种,开关和摇杆。这里只讨论开关的定义。

根据硬件在hal_board_cfg.h中定义

在hal_key.h中定义宏位

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


附录: hal_board_cfg.h

#ifndef HAL_BOARD_CFG_H
#define HAL_BOARD_CFG_H






#include "hal_mcu.h"
#include "hal_defs.h"
#include "hal_types.h"


#define xHAL_PA_LNA
#define xHAL_PA_LNA_CC2590




#if !defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_BOARD_CC2530EB_REV13)
  #define HAL_BOARD_CC2530EB_REV17
#endif


#define HAL_CPU_CLOCK_MHZ     32


#if !defined (OSC32K_CRYSTAL_INSTALLED) || (defined (OSC32K_CRYSTAL_INSTALLED) && (OSC32K_CRYSTAL_INSTALLED == TRUE))
  #define OSC_32KHZ  0x00 
#else
  #define OSC_32KHZ  0x80 
#endif



#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++) { }; } )




#define LED1_BV           BV(0)
#define LED1_SBIT         P0_0
#define LED1_DDR          P0DIR

#define LED1_POLARITY     ACTIVE_HIGH


  #define LED2_BV           BV(0)
  #define LED2_SBIT         P2_0
  #define LED2_DDR          P2DIR

  #define LED2_POLARITY     ACTIVE_HIGH

#ifdef HAL_BOARD_CC2530EB_REV17
 




  
  #define LED3_BV           BV(4)
  #define LED3_SBIT         P1_4
  #define LED3_DDR          P1DIR
  #define LED3_POLARITY     ACTIVE_HIGH
#endif



#define ACTIVE_LOW        !
#define ACTIVE_HIGH       !!    



#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


#define PUSH2_BV          BV(0)
//#define PUSH2_SBIT        P2_0
#define PUSH2_POLARITY    ACTIVE_HIGH 



// 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))





#define PREFETCH_ENABLE()     st( FCTL = 0x08; )
#define PREFETCH_DISABLE()    st( FCTL = 0x04; )


#if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && !defined (HAL_PA_LNA_CC2590)

#define HAL_BOARD_INIT()                                         
{                                                                
  uint16 i;                                                      
                                                                 
  SLEEPCMD &= ~OSC_PD;                                       
  while (!(SLEEPSTA & XOSC_STB));                                 
  asm("NOP");                                                            
  for (i=0; i<504; i++) asm("NOP");                          
  CLKConCMD = (CLKCONCMD_32MHZ | OSC_32KHZ);  
  while (CLKConSTA != (CLKCONCMD_32MHZ | OSC_32KHZ));    
  SLEEPCMD |= OSC_PD;                                                      
                                                                 
                                
  PREFETCH_ENABLE();                                            
                                                                 
                            
  LED1_DDR |= LED1_BV;                                           
  LED2_DDR |= LED2_BV;                                           
  LED3_DDR |= LED3_BV;                                           
                                                                 
                                        
                                               
}

#elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) || defined (HAL_PA_LNA_CC2590)

#define HAL_BOARD_INIT()                                         
{                                                                
  uint16 i;                                                      
                                                                 
  SLEEPCMD &= ~OSC_PD;                                       
  while (!(SLEEPSTA & XOSC_STB));                                 
  asm("NOP");                                                            
  for (i=0; i<504; i++) asm("NOP");                          
  CLKConCMD = (CLKCONCMD_32MHZ | OSC_32KHZ);  
  while (CLKConSTA != (CLKCONCMD_32MHZ | OSC_32KHZ));    
  SLEEPCMD |= OSC_PD;                                                      
                                                                 
                                
  PREFETACH_ENABLE();                                            
                                                                 
                            
  LED1_DDR |= LED1_BV;                                           
                                                                 
                                
  P0DIR |= BV(7);                                                
                                                                 
                                        
                                              
}

#endif


#define HAL_DEBOUNCE(expr)    { int i; for (i=0; i<500; i++) { if (!(expr)) i = 0; } }


#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)


#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


#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( 
  
  U1CSR = 0; 
  
  
  U1GCR = 11; 
  U1BAUD = 216; 
  
  
  U1GCR |= BV(5); 
  
  
  PERCFG |= 0x02;  
  
  
  P1SEL |= 0xE0;  
  
  P1SEL &= ~0x0E; 
  P1 |= 0x0E; 
  P1_1 = 0; 
  P1DIR |= 0x0E; 
  
  
  P2SEL &= ~0x20;  
  
  
  U1CSR |= 0x40; 
  
  P1_1 = 1; 
)




#ifndef HAL_TIMER
#define HAL_TIMER FALSE
#endif


#ifndef HAL_ADC
#define HAL_ADC TRUE
#endif


#ifndef HAL_DMA
#define HAL_DMA TRUE
#endif


#ifndef HAL_FLASH
#define HAL_FLASH TRUE
#endif


#ifndef HAL_AES
#define HAL_AES TRUE
#endif

#ifndef HAL_AES_DMA
#define HAL_AES_DMA TRUE
#endif


#ifndef HAL_LCD
#define HAL_LCD TRUE
#endif


#ifndef HAL_LED
#define HAL_LED TRUE
#endif
#if (!defined Blink_LEDS) && (HAL_LED == TRUE)
#define Blink_LEDS
#endif


#ifndef HAL_KEY
#define HAL_KEY TRUE
#endif


#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

#ifndef HAL_KEY_H
#define HAL_KEY_H

#ifdef __cplusplus
extern "C"
{
#endif


#include "hal_board.h"






#define HAL_KEY_INTERRUPT_DISABLE    0x00
#define HAL_KEY_INTERRUPT_ENABLE     0x01


#define HAL_KEY_STATE_NORMAL          0x00
#define HAL_KEY_STATE_SHIFT           0x01


#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


#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


typedef void (*halKeyCBack_t) (uint8 keys, uint8 state);


extern bool Hal_KeyIntEnable;




extern void HalKeyInit( void );


extern void HalKeyConfig( bool interruptEnable, const halKeyCBack_t cback);


extern uint8 HalKeyRead( void);


extern void HalKeyEnterSleep ( void );


extern uint8 HalKeyExitSleep ( void );


extern void HalKeyPoll ( void );


extern bool HalKeyPressed( void );



#ifdef __cplusplus
}
#endif

#endif

hal_key.c



#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)




#define HAL_KEY_RISING_EDGE   0
#define HAL_KEY_FALLING_EDGE  1

#define HAL_KEY_DEBOUNCE_VALUE  25
#define HAL_KEY_POLLING_VALUE   100


#define HAL_KEY_CPU_PORT_0_IF P0IF
#define HAL_KEY_CPU_PORT_2_IF P2IF




#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


#define HAL_KEY_SW_6_EDGEBIT  BV(0)
#define HAL_KEY_SW_6_EDGE     HAL_KEY_FALLING_EDGE



#define HAL_KEY_SW_6_IEN      IEN1  
#define HAL_KEY_SW_6_IENBIT   BV(5) 
#define HAL_KEY_SW_6_ICTL     P0IEN 
#define HAL_KEY_SW_6_ICTLBIT  BV(1) 
#define HAL_KEY_SW_6_PXIFG    P0IFG 


#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


#define HAL_KEY_JOY_MOVE_EDGEBIT  BV(3)
#define HAL_KEY_JOY_MOVE_EDGE     HAL_KEY_FALLING_EDGE


#define HAL_KEY_JOY_MOVE_IEN      IEN2  
#define HAL_KEY_JOY_MOVE_IENBIT   BV(1) 
#define HAL_KEY_JOY_MOVE_ICTL     P2IEN 
#define HAL_KEY_JOY_MOVE_ICTLBIT  BV(0) 
#define HAL_KEY_JOY_MOVE_PXIFG    P2IFG 

#define HAL_KEY_JOY_CHN   HAL_ADC_CHANNEL_6






static uint8 halKeySavedKeys;     
static halKeyCBack_t pHalKeyProcessFunction;
static uint8 HalKeyConfigured;
bool Hal_KeyIntEnable;            


void halProcessKeyInterrupt(void);
uint8 halGetJoyKeyInput(void);







void HalKeyInit( void )
{
  
  halKeySavedKeys = 0;

  HAL_KEY_SW_6_SEL &= ~(HAL_KEY_SW_6_BIT);    
  HAL_KEY_SW_6_DIR &= ~(HAL_KEY_SW_6_BIT);    

  //HAL_KEY_JOY_MOVE_SEL &= ~(HAL_KEY_JOY_MOVE_BIT); 
  //HAL_KEY_JOY_MOVE_DIR &= ~(HAL_KEY_JOY_MOVE_BIT); 


  
  pHalKeyProcessFunction  = NULL;

  
  HalKeyConfigured = FALSE;
}



void HalKeyConfig (bool interruptEnable, halKeyCBack_t cback)
{
  
  Hal_KeyIntEnable = interruptEnable;

  
  pHalKeyProcessFunction = cback;

  
  if (Hal_KeyIntEnable)
  {
    

    PICTL &= ~(HAL_KEY_SW_6_EDGEBIT);    
    
  #if (HAL_KEY_SW_6_EDGE == HAL_KEY_FALLING_EDGE)
    PICTL |= HAL_KEY_SW_6_EDGEBIT;
  #endif


    
    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);



    

    HAL_KEY_JOY_MOVE_ICTL &= ~(HAL_KEY_JOY_MOVE_EDGEBIT);    
    
  #if (HAL_KEY_JOY_MOVE_EDGE == HAL_KEY_FALLING_EDGE)
    HAL_KEY_JOY_MOVE_ICTL |= HAL_KEY_JOY_MOVE_EDGEBIT;
  #endif


    
    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);


    
    if (HalKeyConfigured == TRUE)
    {
      osal_stop_timerEx( Hal_TaskID, HAL_KEY_EVENT);  
    }
  }
  else    
  {
    HAL_KEY_SW_6_ICTL &= ~(HAL_KEY_SW_6_ICTLBIT); 
    HAL_KEY_SW_6_IEN &= ~(HAL_KEY_SW_6_IENBIT);   

    osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_POLLING_VALUE);    
  }

  
  HalKeyConfigured = TRUE;
}



uint8 HalKeyRead ( void )
{
  uint8 keys = 0;

#ifdef HAL_BOARD_CC2530EB_REV17
  if ( (HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT))    
#elif defined (HAL_BOARD_CC2530EB_REV13)
  if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT))    
#endif
  {
    keys |= HAL_KEY_SW_6;
  }

  if ((HAL_KEY_JOY_MOVE_PORT & HAL_KEY_JOY_MOVE_BIT))  
  {
    //keys |= halGetJoyKeyInput();
  }

  return keys;
}



void HalKeyPoll (void)
{
  uint8 keys = 0;

  if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT))    
  {
    keys |= HAL_KEY_SW_6;
  }

  if ((HAL_KEY_JOY_MOVE_PORT & HAL_KEY_JOY_MOVE_BIT))  
  {
    //keys = halGetJoyKeyInput();
  }

  
  if (!Hal_KeyIntEnable)
  {
    if (keys == halKeySavedKeys)
    {
      
      return;
    }
    
    halKeySavedKeys = keys;
  }
  else
  {
    
  }

  
  if (keys && (pHalKeyProcessFunction))
  {
    (pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL);
  }
}


uint8 halGetJoyKeyInput(void)
{
  
  uint8 adc;
  uint8 ksave0 = 0;
  uint8 ksave1;

  
  do
  {
    ksave1 = ksave0;    

    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;
}






void halProcessKeyInterrupt (void)
{
  bool valid=FALSE;

  if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT)  
  {
    HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT); 
    valid = TRUE;
  }

  if (HAL_KEY_JOY_MOVE_PXIFG & HAL_KEY_JOY_MOVE_BIT)  
  {
    HAL_KEY_JOY_MOVE_PXIFG = ~(HAL_KEY_JOY_MOVE_BIT); 
    valid = TRUE;
  }

  if (valid)
  {
    osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE);
  }
}


void HalKeyEnterSleep ( void )
{
}


uint8 HalKeyExitSleep ( void )
{
  
  return ( HalKeyRead () );
}




HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )
{
  if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT)
  {
    halProcessKeyInterrupt();
  }

  
  HAL_KEY_SW_6_PXIFG = 0;
  HAL_KEY_CPU_PORT_0_IF = 0;
}



HAL_ISR_FUNCTION( halKeyPort2Isr, P2INT_VECTOR )
{
  if (HAL_KEY_JOY_MOVE_PXIFG & HAL_KEY_JOY_MOVE_BIT)
  {
    halProcessKeyInterrupt();
  }

  
  HAL_KEY_JOY_MOVE_PXIFG = 0;
  HAL_KEY_CPU_PORT_2_IF = 0;
}

#else


void HalKeyInit(void){}
void HalKeyConfig(bool interruptEnable, halKeyCBack_t cback){}
uint8 HalKeyRead(void){ return 0;}
void HalKeyPoll(void){}

#endif 










转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312098.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号