|
- #ifndef __LED_H
- #define __LED_H
-
- #include "stm32f4xx.h"
-
- //引脚定义
- /*******************************************************/
- //R 红色灯
- #define LED1_PIN GPIO_PIN_9
- #define LED1_GPIO_PORT GPIOF
- #define LED1_GPIO_CLK_ENABLE() __GPIOF_CLK_ENABLE()
-
- //G 绿色灯
- #define LED2_PIN GPIO_PIN_10
- #define LED2_GPIO_PORT GPIOF
- #define LED2_GPIO_CLK_ENABLE() __GPIOF_CLK_ENABLE()
-
-
- /************************************************************/
-
-
- /** 控制LED灯亮灭的宏,
- * LED低电平亮,设置ON=0,OFF=1
- * 若LED高电平亮,把宏设置成ON=1 ,OFF=0 即可
- */
- #define ON GPIO_PIN_RESET
- #define OFF GPIO_PIN_SET
-
- /* 带参宏,可以像内联函数一样使用 */
- #define LED1(a) HAL_GPIO_WritePin(LED1_GPIO_PORT,LED1_PIN,a)
- #define LED2(a) HAL_GPIO_WritePin(LED2_GPIO_PORT,LED2_PIN,a)
-
- /* 直接操作寄存器的方法控制IO */
- #define digitalHi(p,i) {p->BSRR=i;} //设置为高电平
- #define digitalLo(p,i) {p->BSRR=(uint32_t)i << 16;} //输出低电平
- #define digitalToggle(p,i) {p->ODR ^=i;} //输出反转状态
-
- /* 定义控制IO的宏 */
- #define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,LED1_PIN)
- #define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_PIN)
- #define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_PIN)
-
- #define LED2_TOGGLE digitalToggle(LED2_GPIO_PORT,LED2_PIN)
- #define LED2_OFF digitalHi(LED2_GPIO_PORT,LED2_PIN)
- #define LED2_ON digitalLo(LED2_GPIO_PORT,LED2_PIN)
-
-
- /* 基本混色,后面高级用法使用PWM可混出全彩颜色,且效果更好 */
-
- //红
- #define LED_RED \
- LED1_ON;\
- LED2_OFF\
- //绿
- #define LED_GREEN \
- LED1_OFF;\
- LED2_ON\
- //蓝
- #define LED_BLUE \
- LED1_OFF;\
- LED2_OFF\
- //黄(红+绿)
- #define LED_YELLOW \
- LED1_ON;\
- LED2_ON\
- //紫(红+蓝)
- #define LED_PURPLE \
- LED1_ON;\
- LED2_OFF\
- //青(绿+蓝)
- #define LED_CYAN \
- LED1_OFF;\
- LED2_ON\
- //白(红+绿+蓝)
- #define LED_WHITE \
- LED1_ON;\
- LED2_ON\
- //黑(全部关闭)
- #define LED_RGBOFF \
- LED1_OFF;\
- LED2_OFF\
-
-
-
-
-
- void LED_GPIO_Config(void);
-
- #endif /* __LED_H */
|