CC2541按键修改,IO配置问题
各位大神你们好:
在CC2541simpleBLECentral示例工程中,把之前的IO配置改p1.1和P1.2口作为按键,参照http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/p/67314/157410.aspx#157410和SensorTag来配置,但改后不成功,还请各位大神帮我看看.......
这是我已修改后的地方:
在hal_board_cfg.h中
/* S1 */
#define PUSH1_BV BV(1)
#define PUSH1_SBIT P1_1
#define PUSH1_POLARITY ACTIVE_LOW
/*S2*/
#define PUSH2_BV BV(2)
#define PUSH2_SBIT P1_2
#define PUSH2_POLARITY ACTIVE_LOW
在
#if defined ( CC2540_MINIDK )||(WB_BOARD) // 在编译中添加(WB_BOARD)
/* SW_1 is at P1.1 */
#define HAL_KEY_SW_1_PORT P1
#define HAL_KEY_SW_1_BIT BV(1)
#define HAL_KEY_SW_1_SEL P1SEL
#define HAL_KEY_SW_1_DIR P1DIR
/* SW_2 is at P1.2 */
#define HAL_KEY_SW_2_PORT P1
#define HAL_KEY_SW_2_BIT BV(2)
#define HAL_KEY_SW_2_SEL P1SEL
#define HAL_KEY_SW_2_DIR P1DIR
#define HAL_KEY_SW_1_IEN IEN2 /* CPU interrupt mask register */
#define HAL_KEY_SW_1_ICTL P1IEN /* Port Interrupt Control register */
#define HAL_KEY_SW_1_ICTLBIT BV(1) /* P1IEN - P1.1 enable/disable bit */
#define HAL_KEY_SW_1_IENBIT BV(4) /* Mask bit for all of Port_1 */
#define HAL_KEY_SW_1_PXIFG P1IFG
#define HAL_KEY_SW_2_IEN IEN2
#define HAL_KEY_SW_2_ICTL P1IEN
#define HAL_KEY_SW_2_ICTLBIT BV(2)
#define HAL_KEY_SW_2_IENBIT BV(4)
#define HAL_KEY_SW_2_PXIFG P1IFG
#define HAL_KEY_SW_1_EDGEBIT BV(0)
在simpleBLECentral.c
static void simpleBLECentral_HandleKeys( uint8 shift, uint8 keys )
{
if(keys & HAL_KEY_SW_1)
{
epd_dis_Rssi_db(01);//显示数字01
}
if(keys & HAL_KEY_SW_2)
{
epd_dis_Rssi_db(02);//显示数字02
}
}
按键按下后还是无法显示,其中epd_dis_Rssi_db( );函数没有问题,是不是还有其他地方没有修改到位?
1、首先在应用层初始化函数中加入key事件注册
// Register for all key events - This app will handle all key events
RegisterForKeys(xxxxxx_TaskID );
2、因为simpleBLECentral这个工程可能用到的是五向按键,即ADC加中断模式,而你修改的是两个I/O口,要使用中断模式会好好些
所以在hal_interrupt.c这个源文件 中把PORT1的中断函数修改一下,如果不知道怎么修改的,可以参考keyfob或sensorTag这两个例程或其它
3、希望可以帮到你,祝你好运
问题解决了没有,好像这里没有改
#define HAL_KEY_SW_1_EDGEBIT BV(0)
你试一下,好像要改成 BV(3)