HalLedSet (uint8 leds, uint8 mode)怎么用?

没明白uint8 HalLedSet (uint8 leds, uint8 mode)这个函数怎么使用?

例如我LED的控制GPIO是A15,

#define LED_PIN (GPIO_Pin_15)


HAL_Init( );

  GPIOA_SetBits(LED_PIN);

  GPIOA_ModeCfg(LED_PIN, GPIO_ModeOut_PP_20mA);

  DelayMs(5000);

//  GPIOA_ResetBits(LED_PIN);

  HalLedSet(LED_PIN, HAL_LED_MODE_ON);

  DelayMs(5000);

//  GPIOA_SetBits(LED_PIN);

  HalLedSet(LED_PIN, HAL_LED_MODE_OFF);


灯不能亮,当用GPIOA_ResetBits(LED_PIN);灯右以正常亮。

HalLedSet()时要注意什么呢?

如果你看了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.



只有登录才能回复,可以选择微信账号登录