led.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. #include "led.h"
  2. #include "board.h"
  3. ledParams_ts ledParams =
  4. {
  5. .list[0].ledOn = LED1_ON,
  6. .list[1].ledOn = LED2_ON,
  7. .list[0].ledOff = LED1_OFF,
  8. .list[1].ledOff = LED2_OFF,
  9. };
  10. uint16_t beepOnTimeOut;
  11. uint8_t beepFrequence = 1;
  12. //·äÃùÆ÷ IO³õʼ»¯
  13. void beep_init(void)
  14. {
  15. GPIO_InitTypeDef GPIO_InitStructure;
  16. GPIO_InitStructure.GPIO_Pin = BOARD_PIN_BEEP;
  17. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  18. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  19. GPIO_Init(BOARD_PORT_BEEP, &GPIO_InitStructure);
  20. GPIO_WriteBit(BOARD_PORT_BEEP, BOARD_PIN_BEEP, BEEP_OFF);
  21. }
  22. void beep_onDriver(void)
  23. {
  24. static uint8_t freqCount = 0;
  25. freqCount ++;
  26. if (freqCount >= beepFrequence)
  27. {
  28. freqCount = 0;
  29. if (beepOnTimeOut)
  30. {
  31. GPIO_WriteBit(BOARD_PORT_BEEP, BOARD_PIN_BEEP,
  32. (BitAction)!GPIO_ReadOutputDataBit(BOARD_PORT_BEEP, BOARD_PIN_BEEP));
  33. }
  34. }
  35. if (beepOnTimeOut)
  36. {
  37. beepOnTimeOut --;
  38. if (beepOnTimeOut == 0)
  39. {
  40. GPIO_WriteBit(BOARD_PORT_BEEP, BOARD_PIN_BEEP, BEEP_OFF);
  41. }
  42. }
  43. for (int i = 0; i < MAX_LED_COUNT; i++)
  44. {
  45. if (ledParams.list[i].count)
  46. {
  47. ledParams.list[i].count --;
  48. if (ledParams.list[i].count == 0)
  49. {
  50. if (ledParams.list[i].flashCount)
  51. {
  52. ledParams.list[i].ledOff();
  53. ledParams.list[i].flashCount --;
  54. if (ledParams.list[i].flashCount == 0)
  55. {
  56. ledParams.sta.unit.led1 &= (~(1 << i));
  57. ledParams.list[i].intervalCnting = 0;
  58. }
  59. else
  60. {
  61. ledParams.list[i].intervalCnting = ledParams.list[i].intervalSet;
  62. }
  63. }
  64. }
  65. }
  66. else if(ledParams.list[i].intervalCnting)
  67. {
  68. ledParams.list[i].intervalCnting --;
  69. if (ledParams.list[i].intervalCnting == 0)
  70. {
  71. ledParams.list[i].count = ledParams.list[i].countSet;
  72. ledParams.list[i].ledOff();
  73. }
  74. }
  75. }
  76. }
  77. // void BEEP_ON()
  78. // {
  79. // GPIO_WriteBit(BOARD_GPIO_BEEP, BEEP_ON);
  80. // }
  81. // void BEEP_OFF()
  82. // {
  83. // GPIO_WriteBit(BOARD_GPIO_BEEP, BEEP_OFF);
  84. // }
  85. void beep_setFreq(uint8_t freq)
  86. {
  87. beepFrequence = freq;
  88. }
  89. void beep_longBeep(void)
  90. {
  91. beepOnTimeOut = 200;
  92. }
  93. void beep_shortBeep(void)
  94. {
  95. beepOnTimeOut = 60;
  96. }
  97. //LED IO³õʼ»¯
  98. void LED_Init(void)
  99. {
  100. GPIO_InitTypeDef GPIO_InitStructure;
  101. GPIO_InitStructure.GPIO_Pin = BOARD_PIN_LED1;
  102. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  103. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  104. GPIO_Init(BOARD_PORT_LED1, &GPIO_InitStructure);
  105. GPIO_InitStructure.GPIO_Pin = BOARD_PIN_LED2;
  106. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  107. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  108. GPIO_Init(BOARD_PORT_LED2, &GPIO_InitStructure);
  109. GPIO_WriteBit(BOARD_GPIO_LED1, LED_OFF);
  110. GPIO_WriteBit(BOARD_GPIO_LED2, LED_OFF);
  111. }
  112. void LED1_ON()
  113. {
  114. GPIO_WriteBit(BOARD_GPIO_LED1, LED_ON);
  115. }
  116. void LED1_OFF()
  117. {
  118. GPIO_WriteBit(BOARD_GPIO_LED1, LED_OFF);
  119. }
  120. void LED1_TOGGLE(void)
  121. {
  122. GPIO_WriteBit(BOARD_GPIO_LED1, (BitAction)!GPIO_ReadOutputDataBit(BOARD_GPIO_LED1));
  123. }
  124. void LED1_ON_ONE(void)
  125. {
  126. LED1_ON();
  127. ledParams.sta.unit.led1 = 1;
  128. ledParams.list[0].flashCount = 1;
  129. ledParams.list[0].countSet = 5 * 5;
  130. if(ledParams.list[0].count == 0)ledParams.list[0].count = ledParams.list[0].countSet;
  131. ledParams.list[0].intervalCnting = 0;
  132. ledParams.list[0].intervalSet = 0;
  133. }
  134. void LED2_ON()
  135. {
  136. GPIO_WriteBit(BOARD_GPIO_LED2, LED_ON);
  137. }
  138. void LED2_OFF()
  139. {
  140. GPIO_WriteBit(BOARD_GPIO_LED2, LED_OFF);
  141. }
  142. void LED2_TOGGLE(void)
  143. {
  144. GPIO_WriteBit(BOARD_GPIO_LED2, (BitAction)!GPIO_ReadOutputDataBit(BOARD_GPIO_LED2));
  145. }
  146. void LED2_ON_ONE(void)
  147. {
  148. LED2_ON();
  149. ledParams.sta.unit.led2 = 1;
  150. ledParams.list[1].flashCount = 1;
  151. ledParams.list[1].countSet = 5 * 5;
  152. if(ledParams.list[1].count == 0)ledParams.list[1].count = ledParams.list[1].countSet;
  153. ledParams.list[1].intervalCnting = 0;
  154. ledParams.list[1].intervalSet = 0;
  155. }
  156. void testAllLed(void)
  157. {
  158. static uint8_t ledSta = 1;
  159. GPIO_WriteBit(BOARD_GPIO_LED1, LED_OFF);
  160. GPIO_WriteBit(BOARD_GPIO_LED2, LED_OFF);
  161. switch (ledSta)
  162. {
  163. case 1:
  164. GPIO_WriteBit(BOARD_GPIO_LED1, LED_ON);
  165. break;
  166. case 2:
  167. GPIO_WriteBit(BOARD_GPIO_LED2, LED_ON);
  168. break;
  169. default:
  170. break;
  171. }
  172. ledSta ++;
  173. if (ledSta == 3)
  174. {
  175. ledSta = 0;
  176. }
  177. }