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

沒明白uint8 HalLedSet (uint8 leds, uint8 mode)這個函數(shù)怎么使用?

例如我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);


燈不能亮,當(dāng)用GPIOA_ResetBits(LED_PIN);燈右以正常亮。

HalLedSet()時要注意什么呢?

如果你看了EVT>EXAM>BLE>HAL>LED.c 的源碼

你將發(fā)現(xiàn)這個函數(shù)的具體定義;

其最終的結(jié)果是通過查表方式調(diào)用一些在LED.h中通過#define 方式定義的對LED 控制的相關(guān)的宏.


下面是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()


這個實現(xiàn),是為了一些簡單的控制快速演示.

像絕大多數(shù)情況一樣, 進一步的函數(shù)封裝和抽象是建立在損失靈活性的基礎(chǔ)上的.

你可以完全不使用LED.C 里的代碼, 而通過以往的控制一般GPIO的經(jīng)驗去控制外部的led.



只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频