hi,各位大牛!
请教一个问题:我用IAR开发cc2540使用的sdk为BLE1.1版本。打开一个项目如(SimpleBLEPeripheral)在IAR项目option->/c.c++ compiler->preprocessor->defined symbols中默认有如下宏:
INT_HEAP_LEN=3072
HALNODEBUG
OSAL_CBTIMER_NUM_TASKS=1
HAL_AES_DMA=TRUE
HAL_DMA=TRUE
POWER_SAVING
xPLUS_BROADCASTER
HAL_LCD=FALSE
HAL_LED=TRUE
CC2540_MINIDK
然后在工程的target/CC2540EB/Config/hal_board_cfg.h也定义了一些宏如:
#ifndef HAL_LCD
#define HAL_LCD FALSE
#endif
#ifndef HAL_KEY
#define HAL_KEY TRUE
#endif
#ifndef HAL_LED
#define HAL_LED FALSE
#endif
#if (!defined BLINK_LEDS) && (HAL_LED == TRUE)
#define BLINK_LEDS
#endif
两个地方的宏有相同的地方,请问一下,在项目中具体是哪个地方的宏生效,而且在option中配置的开发板为:CC2540_MINIDK,而在target/CC2540EB/Config/hal_board_cfg.h中定义的开发板为:HAL_BOARD_CC2530EB_REV17,此处该如何理解,难道都生效了?我需要根据自己的板子定义相关的按键和LED该如何修改。HAL_BOARD_CC2530EB_REV17,CC2540_MINIDK都需要注释吗?
Yan:
preprocessor->defined symbols里面定义的优先级高.
比如preprocessor->defined symbols定义了 HAL_LCD=FALSE, 那么在hal_board_cfg.h中
#ifndef HAL_LCD#define HAL_LCD FALSE#endif
就不会被定义, 应为HAL_LCD已经被定义成FALSE了.
另外, 你的协议栈版本很老了, 请去官网下载最新的1.3版本.