131 lines
3.0 KiB
C
131 lines
3.0 KiB
C
#ifndef __LED_H
|
||
#define __LED_H
|
||
|
||
#include "stm32h7xx.h"
|
||
|
||
//引脚定义
|
||
/*******************************************************/
|
||
//R 红色灯
|
||
#define LED1_PIN GPIO_PIN_0
|
||
#define LED1_GPIO_PORT GPIOB
|
||
#define LED1_GPIO_CLK_ENABLE() __GPIOB_CLK_ENABLE()
|
||
|
||
//G 绿色灯
|
||
#define LED2_PIN GPIO_PIN_1
|
||
#define LED2_GPIO_PORT GPIOB
|
||
#define LED2_GPIO_CLK_ENABLE() __GPIOB_CLK_ENABLE()
|
||
|
||
//B 蓝色灯
|
||
#define LED3_PIN GPIO_PIN_3
|
||
#define LED3_GPIO_PORT GPIOA
|
||
#define LED3_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE()
|
||
|
||
//小指示灯
|
||
//#define LED4_PIN GPIO_PIN_3
|
||
//#define LED4_GPIO_PORT GPIOA
|
||
//#define LED4_GPIO_CLK_ENABLE() __GPIOA_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)
|
||
|
||
|
||
#define LED3(a) HAL_GPIO_WritePin(LED2_GPIO_PORT,LED3_PIN,a)
|
||
|
||
|
||
#define LED4(a) HAL_GPIO_WritePin(LED4_GPIO_PORT,LED4_PIN,a)
|
||
|
||
|
||
/* 直接操作寄存器的方法控制IO */
|
||
#define digitalHi(p,i) {p->BSRRL=i;} //设置为高电平
|
||
#define digitalLo(p,i) {p->BSRRH=i;} //输出低电平
|
||
#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)
|
||
|
||
#define LED3_TOGGLE digitalToggle(LED3_GPIO_PORT,LED3_PIN)
|
||
#define LED3_OFF digitalHi(LED3_GPIO_PORT,LED3_PIN)
|
||
#define LED3_ON digitalLo(LED3_GPIO_PORT,LED3_PIN)
|
||
|
||
#define LED4_TOGGLE digitalToggle(LED4_GPIO_PORT,LED4_PIN)
|
||
#define LED4_OFF digitalHi(LED4_GPIO_PORT,LED4_PIN)
|
||
#define LED4_ON digitalLo(LED4_GPIO_PORT,LED4_PIN)
|
||
|
||
|
||
/* 基本混色,后面高级用法使用PWM可混出全彩颜色,且效果更好 */
|
||
|
||
//红
|
||
#define LED_RED \
|
||
LED1_ON;\
|
||
LED2_OFF\
|
||
LED3_OFF
|
||
|
||
//绿
|
||
#define LED_GREEN \
|
||
LED1_OFF;\
|
||
LED2_ON\
|
||
LED3_OFF
|
||
|
||
//蓝
|
||
#define LED_BLUE \
|
||
LED1_OFF;\
|
||
LED2_OFF\
|
||
LED3_ON
|
||
|
||
|
||
//黄(红+绿)
|
||
#define LED_YELLOW \
|
||
LED1_ON;\
|
||
LED2_ON\
|
||
LED3_OFF
|
||
//紫(红+蓝)
|
||
#define LED_PURPLE \
|
||
LED1_ON;\
|
||
LED2_OFF\
|
||
LED3_ON
|
||
|
||
//青(绿+蓝)
|
||
#define LED_CYAN \
|
||
LED1_OFF;\
|
||
LED2_ON\
|
||
LED3_ON
|
||
|
||
//白(红+绿+蓝)
|
||
#define LED_WHITE \
|
||
LED1_ON;\
|
||
LED2_ON\
|
||
LED3_ON
|
||
|
||
//黑(全部关闭)
|
||
#define LED_RGBOFF \
|
||
LED1_OFF;\
|
||
LED2_OFF\
|
||
LED3_OFF
|
||
|
||
|
||
|
||
|
||
|
||
void LED_GPIO_Config(void);
|
||
|
||
#endif /* __LED_H */
|