ind.c 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. /*
  2. * @Descripttion:
  3. * @version:
  4. * @Author: Joe
  5. * @Date: 2021-10-17 14:56:35
  6. * @LastEditors: Please set LastEditors
  7. * @LastEditTime: 2021-11-13 19:00:28
  8. */
  9. //#include <rtthread.h>
  10. //#include <rtdevice.h>
  11. //#include <board.h>
  12. //#define DBG_TAG "led"
  13. //#define DBG_LVL DBG_INFO
  14. //#include <rtdbg.h>
  15. //#define led_pri 28
  16. ///***LED***/
  17. //#define LED_RUN_PIN GET_PIN(B, 9)
  18. //#define ledrun_off() rt_pin_write(LED_RUN_PIN, PIN_HIGH);
  19. //#define ledrun_on() rt_pin_write(LED_RUN_PIN, PIN_LOW);
  20. ////#define LED_V1 GET_PIN(D, 1)
  21. ////#define LED_V2 GET_PIN(D, 3)
  22. ////#define LED_V3 GET_PIN(D, 4)
  23. ////#define LED_V4 GET_PIN(D, 7)
  24. ////#define LED_V5 GET_PIN(G, 9)
  25. ////#define LED_V6 GET_PIN(G, 10)
  26. //static rt_thread_t led_thread = RT_NULL;
  27. ///**
  28. // * @name:
  29. // * @description:
  30. // * @param {void*} parameter
  31. // * @return {*}
  32. // */
  33. //static void led_thread_entry(void* parameter)
  34. //{
  35. // while (1)
  36. // {
  37. // ledrun_on();
  38. // rt_thread_mdelay(500);
  39. // ledrun_off();
  40. // rt_thread_mdelay(1000);
  41. // }
  42. //}
  43. ///**
  44. // * @name:
  45. // * @description:
  46. // * @param {*}
  47. // * @return {*}
  48. // */
  49. //void led_config(void)
  50. //{
  51. //
  52. // rt_pin_mode(LED_RUN_PIN, PIN_MODE_OUTPUT);
  53. // ledrun_off();
  54. //
  55. //}
  56. ///**
  57. // * @name:
  58. // * @description:
  59. // * @param {*}
  60. // * @return {*}
  61. // */
  62. //int led_init(void)
  63. //{
  64. // led_config();
  65. // led_thread =
  66. // rt_thread_create( "led",
  67. // led_thread_entry,
  68. // RT_NULL,
  69. // 2048,
  70. // led_pri,
  71. // 20);
  72. //
  73. //
  74. // if (led_thread != RT_NULL)
  75. // {
  76. // rt_thread_startup(led_thread);
  77. // LOG_I(" led_thread create..");
  78. // }
  79. //
  80. //
  81. // return RT_EOK;
  82. //}
  83. //INIT_APP_EXPORT(led_init);
  84. #include <rtthread.h>
  85. #include <rtdevice.h>
  86. #include "signal_led.h"
  87. #include "env.h"
  88. /* defined the LED pin */
  89. #define LED_BOARD_PIN GET_PIN(B, 9)
  90. #define LED_GRN1_PIN GET_PIN(D, 1)
  91. //定义信号灯对象句柄
  92. static led_t *led_board = NULL;
  93. static led_t *led_green = NULL;
  94. //定义内存操作函数接口
  95. static led_mem_opreation_t led_mem_opreation;
  96. /* 设置信号灯一个周期内的闪烁模式
  97. * 格式为 “亮、灭、亮、灭、亮、灭 …………” 长度不限
  98. * 注意: 该配置单位为毫秒,且必须大于 “LED_TICK_TIME” 宏,且为整数倍(不为整数倍则向下取整处理)
  99. * 必须以英文逗号为间隔,且以英文逗号结尾,字符串内只允许有数字及逗号,不得有其他字符出现
  100. */
  101. const char *led_blink_mode_flash = "500,500"; //1Hz闪烁
  102. const char *led_blink_mode_off = "0,100"; //常灭
  103. const char *led_blink_mode_on = "100,0"; //常亮
  104. //定义开灯函数
  105. static void led_board_switch_on(void)
  106. {
  107. rt_pin_write(LED_BOARD_PIN, PIN_HIGH);
  108. }
  109. //定义关灯函数
  110. static void led_board_switch_off(void)
  111. {
  112. rt_pin_write(LED_BOARD_PIN, PIN_LOW);
  113. }
  114. //定义开灯函数
  115. static void led_grn_switch_on(void)
  116. {
  117. rt_pin_write(LED_GRN1_PIN, PIN_LOW);
  118. }
  119. //定义关灯函数
  120. static void led_grn_switch_off(void)
  121. {
  122. rt_pin_write(LED_GRN1_PIN, PIN_HIGH);
  123. }
  124. static void led_switch(void)
  125. {
  126. static uint16_t stat_last = 0;
  127. if (S.Status != stat_last)
  128. {
  129. switch(S.Status)
  130. {
  131. case STATUS_INIT:
  132. led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_off);
  133. break;
  134. case STATUS_RUN:
  135. case STATUS_READY:
  136. case STATUS_RUN_LOW_POWER:
  137. case STATUS_RUN_OBS_LOW_SPEED:
  138. led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_on);
  139. break;
  140. case STATUS_REMOTE_MANUAL:
  141. led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_off);
  142. break;
  143. default:
  144. led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_flash);
  145. break;
  146. }
  147. }
  148. stat_last = S.Status;
  149. }
  150. static void led_run(void *parameter)
  151. {
  152. while(1)
  153. {
  154. led_switch();
  155. led_ticks();
  156. rt_thread_mdelay(LED_TICK_TIME);
  157. }
  158. }
  159. int rt_led_timer_init(void)
  160. {
  161. rt_pin_mode(LED_BOARD_PIN, PIN_MODE_OUTPUT);
  162. rt_pin_mode(LED_GRN1_PIN, PIN_MODE_OUTPUT);
  163. /*自定义内存操作接口
  164. *注意:若要进行自定义内存操作,必须要在调用任何软件包内接口之前作设置,
  165. * 否则会出现不可意料的错误!!!
  166. */
  167. led_mem_opreation.malloc_fn = (void* (*)(size_t))rt_malloc;
  168. led_mem_opreation.free_fn = rt_free;
  169. led_set_mem_operation(&led_mem_opreation);
  170. //初始化信号灯对象
  171. led_board = led_create(led_board_switch_on, led_board_switch_off);
  172. led_green = led_create(led_grn_switch_on, led_grn_switch_off);
  173. //设置信号灯工作模式,循环十次
  174. led_set_mode(led_board, LOOP_PERMANENT, (void *)led_blink_mode_flash);
  175. led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_flash);
  176. //开启信号灯
  177. led_start(led_board);
  178. led_start(led_green);
  179. rt_thread_t tid = RT_NULL;
  180. tid = rt_thread_create("led",
  181. led_run,
  182. RT_NULL,
  183. 512,
  184. RT_THREAD_PRIORITY_MAX/2,
  185. 100);
  186. if (tid != RT_NULL)
  187. rt_thread_startup(tid);
  188. return RT_EOK;
  189. }
  190. INIT_APP_EXPORT(rt_led_timer_init);