当前位置:
文档之家› 通用文件1—ZStack协议栈修改说明(指示灯按键部分)
通用文件1—ZStack协议栈修改说明(指示灯按键部分)
P0 BV(1) P0SEL 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
函数 void HalKeyPoll (void)修改为以下,注意,将按键 K1 和 K3 的检测代码前移了一下。
void HalKeyPoll (void) {
uint8 keys = 0;
if ((HAL_KEY_JOY_MOVE_PORT & HAL_KEY_JOY_MOVE_BIT)) */
(1)增加按键 K3 的响应代码
/* SW_6 is at P0.1 */
希望微控工作室
第2页共4页
协议栈实验
北京希望慧联科技有限公司
#define HAL_KEY_SW_6_PORT #define HAL_KEY_SW_6_BIT #define HAL_KEY_SW_6_SEL #define HAL_KEY_SW_6_DIR
BV(2)
#define PUSH3_SBIT
P1_2
#define PUSH3_POLARITY ACTIVE_LOW
……. …….
/* ----------- Push Buttons ---------- */ #define HAL_PUSH_BUTTON1() #define HAL_PUSH_BUTTON2()
Biblioteka Baidu
BV(0) P1_0 P1DIR
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
//shift = (keys & HAL_KEY_SW_6) ? true : false; shift = 0; //替换 …… ……. }
希望微控工作室
第4页共4页
#elif defined (HAL_BOARD_CC2530EB_REV13) #define PUSH1_POLARITY ACTIVE_LOW
#else #error Unknown Board Indentifier
#endif
/* 自定义按键 K3 ,XWHL 添加*/
#define PUSH3_BV
(2)修改按键配置
希望微控工作室
第1页共4页
协议栈实验
北京希望慧联科技有限公司
/* S1 */ #define PUSH1_BV #define PUSH1_SBIT
BV(1) P0_1
#if defined (HAL_BOARD_CC2530EB_REV17) #define PUSH1_POLARITY ACTIVE_LOW //原值为 ACTIVE_HIGH
#define HAL_PUSH_BUTTON3()
(PUSH1_POLARITY (PUSH1_SBIT)) (PUSH2_POLARITY (PUSH2_SBIT)) (PUSH3_POLARITY (PUSH3_SBIT)) //添加自定义按键
1.2 修改 hal_Key.c
修改文件名:hal_Key.c,位置如下图:红色部分为修改或者增加的代码
1.3 修改 OnBoard.c
修改文件名:OnBoard.c,位置如下图:红色部分为修改或者增加的代
修改函数 void OnBoard_KeyCallback ( uint8 keys, uint8 state )使得 SW6 作为 Shift 键失效, 仅作为按键 K1 使用。
void OnBoard_KeyCallback ( uint8 keys, uint8 state ) {
(pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL); } }
(2)去掉游戏键响应代码
函数 uint8 halGetJoyKeyInput(void)中修改,使得该函数直接返回 0,因为主板没有采用 Joy 键,所以屏蔽该按键
//return ksave0; //XWHL 修改,屏蔽该代码,直接返回 0 return 0;
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) {
P1DIR
#define LED2_POLARITY ACTIVE_LOW //值为 ACTIVE_HIGH
/* 3 - Yellow */ #define LED3_BV #define LED3_SBIT #define LED3_DDR
#define LED3_POLARITY #endif
BV(4) P1_4 P1DIR ACTIVE_LOW //值为 ACTIVE_HIGH
在函数 HalKeyInit( void )中添加
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 */
halKeySavedKeys = keys; } else {
/* Key interrupt handled here */ }
北京希望慧联科技有限公司
/* Invoke Callback if new keys were depressed */ if (keys && (pHalKeyProcessFunction)) {
//XWHL 增加代码,初始化按键 K3 HAL_KEY_SW_7_SEL &= ~(HAL_KEY_SW_7_BIT); HAL_KEY_SW_7_DIR &= ~(HAL_KEY_SW_7_BIT);
/* Set pin function to GPIO */ /* Set pin direction to Input */
{ keys = halGetJoyKeyInput();
}
/* Key is active HIGH
if (HAL_PUSH_BUTTON1()) //底板的 K1 {
keys |= HAL_KEY_SW_6; } //XWHL 添加代码,用于响应按键 K3 if (HAL_PUSH_BUTTON3()) //底板的 K3 {
协议栈实验
北京希望慧联科技有限公司
Z-Stack 协议栈底层修改(指示灯按键部分)
1.1 修改 hal_board_cfg.h
修改文件名:hal_board_cfg.h,位置如下图:红色部分为修改或者增加的代码
(1)修改指示灯配置
/* 1 - Green */ #define LED1_BV #define LED1_SBIT #define LED1_DDR #define LED1_POLARITY
if (keys == halKeySavedKeys) {
/* Exit - since no keys have changed */ return; } /* Store the current keys for comparation next time */
希望微控工作室
第3页共4页
协议栈实验