Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 

90 Zeilen
2.0 KiB

  1. #ifndef __LED_H
  2. #define __LED_H
  3. #include "stm32f4xx.h"
  4. //引脚定义
  5. /*******************************************************/
  6. //R 红色灯
  7. #define LED1_PIN GPIO_PIN_9
  8. #define LED1_GPIO_PORT GPIOF
  9. #define LED1_GPIO_CLK_ENABLE() __GPIOF_CLK_ENABLE()
  10. //G 绿色灯
  11. #define LED2_PIN GPIO_PIN_10
  12. #define LED2_GPIO_PORT GPIOF
  13. #define LED2_GPIO_CLK_ENABLE() __GPIOF_CLK_ENABLE()
  14. /************************************************************/
  15. /** 控制LED灯亮灭的宏,
  16. * LED低电平亮,设置ON=0,OFF=1
  17. * 若LED高电平亮,把宏设置成ON=1 ,OFF=0 即可
  18. */
  19. #define ON GPIO_PIN_RESET
  20. #define OFF GPIO_PIN_SET
  21. /* 带参宏,可以像内联函数一样使用 */
  22. #define LED1(a) HAL_GPIO_WritePin(LED1_GPIO_PORT,LED1_PIN,a)
  23. #define LED2(a) HAL_GPIO_WritePin(LED2_GPIO_PORT,LED2_PIN,a)
  24. /* 直接操作寄存器的方法控制IO */
  25. #define digitalHi(p,i) {p->BSRR=i;} //设置为高电平
  26. #define digitalLo(p,i) {p->BSRR=(uint32_t)i << 16;} //输出低电平
  27. #define digitalToggle(p,i) {p->ODR ^=i;} //输出反转状态
  28. /* 定义控制IO的宏 */
  29. #define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,LED1_PIN)
  30. #define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_PIN)
  31. #define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_PIN)
  32. #define LED2_TOGGLE digitalToggle(LED2_GPIO_PORT,LED2_PIN)
  33. #define LED2_OFF digitalHi(LED2_GPIO_PORT,LED2_PIN)
  34. #define LED2_ON digitalLo(LED2_GPIO_PORT,LED2_PIN)
  35. /* 基本混色,后面高级用法使用PWM可混出全彩颜色,且效果更好 */
  36. //红
  37. #define LED_RED \
  38. LED1_ON;\
  39. LED2_OFF\
  40. //绿
  41. #define LED_GREEN \
  42. LED1_OFF;\
  43. LED2_ON\
  44. //蓝
  45. #define LED_BLUE \
  46. LED1_OFF;\
  47. LED2_OFF\
  48. //黄(红+绿)
  49. #define LED_YELLOW \
  50. LED1_ON;\
  51. LED2_ON\
  52. //紫(红+蓝)
  53. #define LED_PURPLE \
  54. LED1_ON;\
  55. LED2_OFF\
  56. //青(绿+蓝)
  57. #define LED_CYAN \
  58. LED1_OFF;\
  59. LED2_ON\
  60. //白(红+绿+蓝)
  61. #define LED_WHITE \
  62. LED1_ON;\
  63. LED2_ON\
  64. //黑(全部关闭)
  65. #define LED_RGBOFF \
  66. LED1_OFF;\
  67. LED2_OFF\
  68. void LED_GPIO_Config(void);
  69. #endif /* __LED_H */