如果你看了EVT>EXAM>BLE>HAL>LED.c 的源码
你将发现这个函数的具体定义;
其最终的结果是通过查表方式调用一些在LED.h中通过#define 方式定义的对LED 控制的相关的宏.
下面是VT>EXAM>BLE>HAL>LED.h的部分源码:
LED引脚需要事先在这里定义.
/* 1 - LED */
#define LED1_BV BV(15)
#define LED2_BV
#define LED3_BV
#define LED1_OUT (R32_PB_OUT)
#define LED2_OUT 0
#define LED3_OUT 0
#define LED4_OUT 0
#define LED1_DDR (R32_PB_DIR|=LED1_BV)
#define LED2_DDR 0
#define LED3_DDR 0
#define HAL_TURN_OFF_LED1() (LED1_OUT |= LED1_BV)
#define HAL_TURN_OFF_LED2()
#define HAL_TURN_OFF_LED3()
#define HAL_TURN_OFF_LED4()
#define HAL_TURN_ON_LED1() (LED1_OUT &= (~LED1_BV))
#define HAL_TURN_ON_LED2()
#define HAL_TURN_ON_LED3()
#define HAL_TURN_ON_LED4()
这个实现,是为了一些简单的控制快速演示.
像绝大多数情况一样, 进一步的函数封装和抽象是建立在损失灵活性的基础上的.
你可以完全不使用LED.C 里的代码, 而通过以往的控制一般GPIO的经验去控制外部的led.