《通用文件1—ZStack协议栈修改说明(指示灯按键部分)》由会员分享,可在线阅读,更多相关《通用文件1—ZStack协议栈修改说明(指示灯按键部分)(4页珍藏版)》请在金锄头文库上搜索。
1、协议栈实验 北京希望慧联科技有限公司 希望微控工作室 第 1 页 共 4 页 Z-Stack协议栈协议栈协议栈协议栈底层底层底层底层修改修改修改修改(指示灯按键部分指示灯按键部分指示灯按键部分指示灯按键部分) 1.1 修改修改修改 修改 hal_board_cfg.h 修改文件名: hal_board_cfg.h,位置如下图:红色部分为修改或者增加的代码 ( (1 1) )修改指示灯配置 修改指示灯配置修改指示灯配置修改指示灯配置 /* 1 - Green */ #define LED1_BV BV(0) #define LED1_SBIT P1_0 #define LED1_DDR P1DI
2、R #define LED1_POLARITY ACTIVE_LOW /原值为 ACTIVE_HIGH #if defined (HAL_BOARD_CC2530EB_REV17) /* 2 - Red */ #define LED2_BV BV(1) #define LED2_SBIT P1_1 #define LED2_DDR P1DIR #define LED2_POLARITY ACTIVE_LOW /值为 ACTIVE_HIGH /* 3 - Yellow */ #define LED3_BV BV(4) #define LED3_SBIT P1_4 #define LED3_DDR
3、 P1DIR #define LED3_POLARITY ACTIVE_LOW /值为 ACTIVE_HIGH #endif ( (2 2) )修改按键配置 修改按键配置修改按键配置修改按键配置 协议栈实验 北京希望慧联科技有限公司 希望微控工作室 第 2 页 共 4 页 /* S1 */ #define PUSH1_BV BV(1) #define PUSH1_SBIT P0_1 #if defined (HAL_BOARD_CC2530EB_REV17) #define PUSH1_POLARITY ACTIVE_LOW /原值为 ACTIVE_HIGH #elif defined (HA
4、L_BOARD_CC2530EB_REV13) #define PUSH1_POLARITY ACTIVE_LOW #else #error Unknown Board Indentifier #endif /* 自定义按键 K3 , XWHL 添加 */ #define PUSH3_BV BV(2) #define PUSH3_SBIT P1_2 #define PUSH3_POLARITY ACTIVE_LOW . . /* - Push Buttons - */ #define HAL_PUSH_BUTTON1() (PUSH1_POLARITY (PUSH1_SBIT) #define
5、 HAL_PUSH_BUTTON2() (PUSH2_POLARITY (PUSH2_SBIT) #define HAL_PUSH_BUTTON3() (PUSH3_POLARITY (PUSH3_SBIT) /添加自定义按键 1.2 修改修改修改 修改 hal_Key.c 修改文件名: hal_Key.c,位置如下图:红色部分为修改或者增加的代码 ( (1 1) )增加按键 增加按键增加按键增加按键 K3 K3 的响应代码的响应代码的响应代码的响应代码 /* SW_6 is at P0.1 */ 协议栈实验 北京希望慧联科技有限公司 希望微控工作室 第 3 页 共 4 页 #define H
6、AL_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_7 is at P1.2 */ /XWHL 增加代码,用于按键 K3 设置 #define HAL_KEY_SW_7_PORT P1 #define HAL_KEY_SW_7_BIT BV(2) #define HAL_KEY_SW_7_SEL P1SEL #define HAL_KEY_SW_7_DIR P1DIR 在函数 HalKeyInit( void
7、)中添加 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 */ /XWHL 增加代码,初始化按键 K3 HAL_KEY_SW_7_SEL &= (HAL_KEY_SW_7_BIT); /* Set pin function to GPIO */ HAL_KEY_SW_7_DIR &= (HAL_KEY_SW_7_BIT); /* Set pin direction
8、 to Input */ 函数 void HalKeyPoll (void)修改为以下,注意,将按键 K1 和 K3 的检测代码前移了一下。 void HalKeyPoll (void) uint8 keys = 0; if (HAL_KEY_JOY_MOVE_PORT & HAL_KEY_JOY_MOVE_BIT) /* Key is active HIGH */ keys = halGetJoyKeyInput(); if (HAL_PUSH_BUTTON1() /底板的 K1 keys |= HAL_KEY_SW_6; /XWHL 添加代码,用于响应按键 K3 if (HAL_PUSH_
9、BUTTON3() /底板的 K3 keys |= HAL_KEY_SW_7; /* 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
10、 for comparation next time */ 协议栈实验 北京希望慧联科技有限公司 希望微控工作室 第 4 页 共 4 页 halKeySavedKeys = keys; else /* Key interrupt handled here */ /* Invoke Callback if new keys were depressed */ if (keys & (pHalKeyProcessFunction) (pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL); ( (2 2) )去掉游戏键响应代码 去掉游戏键响应代码去
11、掉游戏键响应代码去掉游戏键响应代码 函数 uint8 halGetJoyKeyInput(void)中修改,使得该函数直接返回 0,因为主板没有采用 Joy键,所以屏蔽该按键 /return ksave0; /XWHL 修改,屏蔽该代码,直接返回 0 return 0; 1.3 修改修改修改 修改 OnBoard.c 修改文件名: OnBoard.c,位置如下图:红色部分为修改或者增加的代 修改函数 void OnBoard_KeyCallback ( uint8 keys, uint8 state )使得 SW6 作为 Shift 键失效,仅作为按键 K1 使用。 void OnBoard_KeyCallback ( uint8 keys, uint8 state ) /shift = (keys & HAL_KEY_SW_6) ? true : false; shift = 0; /替换 .