Led.c 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /*********************************************************************************************************
  2. * 模块名称:LED.c
  3. * 摘 要:LED模块
  4. * 当前版本:1.0.0
  5. * 作 者:Leyutek(COPYRIGHT 2018 - 2021 Leyutek. All rights reserved.)
  6. * 完成日期:2021年07月01日
  7. * 内 容:
  8. * 注 意:
  9. **********************************************************************************************************
  10. * 取代版本:
  11. * 作 者:
  12. * 完成日期:
  13. * 修改内容:
  14. * 修改文件:
  15. *********************************************************************************************************/
  16. /*********************************************************************************************************
  17. * 包含头文件
  18. *********************************************************************************************************/
  19. #include "Led.h"
  20. #include "gd32e230x_conf.h"
  21. #include "systick.h"
  22. /*********************************************************************************************************
  23. * 宏定义
  24. *********************************************************************************************************/
  25. /*********************************************************************************************************
  26. * 枚举结构体
  27. *********************************************************************************************************/
  28. /*********************************************************************************************************
  29. * 内部变量定义
  30. *********************************************************************************************************/
  31. /*********************************************************************************************************
  32. * 内部函数声明
  33. *********************************************************************************************************/
  34. static void ConfigLEDGPIO(void); //配置USER_LED的GPIO
  35. /*********************************************************************************************************
  36. * 内部函数实现
  37. *********************************************************************************************************/
  38. /*********************************************************************************************************
  39. * 函数名称:ConfigLEDGPIO
  40. * 函数功能:配置LED的GPIO
  41. * 输入参数:void
  42. * 输出参数:void
  43. * 返 回 值:void
  44. * 创建日期:2021年07月01日
  45. * 注 意:
  46. *********************************************************************************************************/
  47. static void ConfigLEDGPIO(void)
  48. {
  49. //使能RCU相关时钟
  50. rcu_periph_clock_enable(USR_LED_RCU); //使能GPIOB的时钟
  51. gpio_mode_set(USR_LED_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, USR_LED); //设置GPIO模式
  52. gpio_output_options_set(USR_LED_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, USR_LED); //设置GPIO输出模式及速度
  53. gpio_bit_set(USR_LED_IO, USR_LED); //将USER_LED默认状态设置为打开
  54. }
  55. /*********************************************************************************************************
  56. * API函数实现
  57. *********************************************************************************************************/
  58. /*********************************************************************************************************
  59. * 函数名称:InitLED
  60. * 函数功能:初始化LED模块
  61. * 输入参数:void
  62. * 输出参数:void
  63. * 返 回 值:void
  64. * 创建日期:2021年07月01日
  65. * 注 意:
  66. *********************************************************************************************************/
  67. void InitLED(void)
  68. {
  69. ConfigLEDGPIO(); //配置LED的GPIO
  70. }
  71. void DeInitLED(void)
  72. {
  73. rcu_periph_clock_disable(USR_LED_RCU);
  74. }
  75. /*********************************************************************************************************
  76. * 函数名称:LEDFlicker1
  77. * 函数功能:LED闪烁函数
  78. * 输入参数:cnt
  79. * 输出参数:void
  80. * 返 回 值:void
  81. * 创建日期:2021年07月01日
  82. * 注 意:LEDFlicker1在Proc2msTask中调用,cnt为250时表示每500ms更改一次LED状态
  83. *********************************************************************************************************/
  84. void LEDFlicker1(unsigned short cnt)
  85. {
  86. static unsigned short s_iCnt; //定义静态变量s_iCnt作为计数器
  87. s_iCnt++; //计数器的计数值加1
  88. if(s_iCnt >= cnt) //计数器的计数值大于cnt
  89. {
  90. s_iCnt = 0; //重置计数器的计数值为0
  91. //USER_LED状态取反,实现USER_LED闪烁
  92. gpio_bit_write(USR_LED_IO, USR_LED, 1-gpio_output_bit_get(USR_LED_IO, USR_LED));
  93. }
  94. }
  95. /*********************************************************************************************************
  96. * 函数名称:LEDFlicker2
  97. * 函数功能:LED闪烁函数
  98. * 输入参数:void
  99. * 输出参数:void
  100. * 返 回 值:void
  101. * 创建日期:2021年07月01日
  102. * 注 意:LEDFlicker2在Proc1SecTask中调用,每100ms更改一次LED状态
  103. *********************************************************************************************************/
  104. void LEDFlicker2(void)
  105. {
  106. //USER_LED状态取反,实现USER_LED闪烁
  107. gpio_bit_toggle(USR_LED_IO, USR_LED);
  108. // delay_ms(100);
  109. // gpio_bit_toggle(USR_LED_IO, USR_LED);
  110. // delay_ms(100);
  111. // gpio_bit_toggle(USR_LED_IO, USR_LED);
  112. // delay_ms(100);
  113. // gpio_bit_toggle(USR_LED_IO, USR_LED);
  114. }