假如有大兄弟使用HAL_KEY的按键超过了8个,建议按照下面的方法。

之所以出现这个的原因就是key只定义到uint8,所以只能响应8个按键。你得将他修改为uint16,主要修改的点

key.h文件

第一处

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

第二处

typedef struct

{

  tmos_event_hdr_t hdr;

  uint8  state; // shift

  uint16  keys;  // keys

} keyChange_t;

第三处

void HalKeyCallback ( uint16 keys, uint8 state );


key.c

第一处

static uint16 halKeySavedKeys;     /* 保留按键最后的状态,用于查询是否有键值变化 */

static uint16 KeyConfigFlag;    /* 按键是否配置标志位 */

第二处

uint8 OnBoard_SendKeys( uint16 keys, uint8 state )

第三处

void HalKeyCallback ( uint16 keys, uint8 state )

第四处

uint8 HalKeyRead ( void )

{

  uint16 keys = 0;

第五处

void HAL_KeyPoll (void)

{

  uint16 keys = 0;

第六处

然后再是你的主程序逻辑文件

第一处

static void Peripheral_HandleKeys( uint8 shift, uint16 keys );

第二处

static void Peripheral_HandleKeys( uint8 shift, uint16 keys )


不错


只有登录才能回复,可以选择微信账号登录