123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- /*
- * @Descripttion:
- * @version:
- * @Author: Joe
- * @Date: 2021-10-17 14:56:35
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2021-11-13 19:00:28
- */
- //#include <rtthread.h>
- //#include <rtdevice.h>
- //#include <board.h>
- //#define DBG_TAG "led"
- //#define DBG_LVL DBG_INFO
- //#include <rtdbg.h>
- //#define led_pri 28
- ///***LED***/
- //#define LED_RUN_PIN GET_PIN(B, 9)
- //#define ledrun_off() rt_pin_write(LED_RUN_PIN, PIN_HIGH);
- //#define ledrun_on() rt_pin_write(LED_RUN_PIN, PIN_LOW);
- ////#define LED_V1 GET_PIN(D, 1)
- ////#define LED_V2 GET_PIN(D, 3)
- ////#define LED_V3 GET_PIN(D, 4)
- ////#define LED_V4 GET_PIN(D, 7)
- ////#define LED_V5 GET_PIN(G, 9)
- ////#define LED_V6 GET_PIN(G, 10)
- //static rt_thread_t led_thread = RT_NULL;
- ///**
- // * @name:
- // * @description:
- // * @param {void*} parameter
- // * @return {*}
- // */
- //static void led_thread_entry(void* parameter)
- //{
- // while (1)
- // {
- // ledrun_on();
- // rt_thread_mdelay(500);
- // ledrun_off();
- // rt_thread_mdelay(1000);
- // }
- //}
- ///**
- // * @name:
- // * @description:
- // * @param {*}
- // * @return {*}
- // */
- //void led_config(void)
- //{
- //
- // rt_pin_mode(LED_RUN_PIN, PIN_MODE_OUTPUT);
- // ledrun_off();
- //
- //}
- ///**
- // * @name:
- // * @description:
- // * @param {*}
- // * @return {*}
- // */
- //int led_init(void)
- //{
- // led_config();
- // led_thread =
- // rt_thread_create( "led",
- // led_thread_entry,
- // RT_NULL,
- // 2048,
- // led_pri,
- // 20);
- //
- //
- // if (led_thread != RT_NULL)
- // {
- // rt_thread_startup(led_thread);
- // LOG_I(" led_thread create..");
- // }
- //
- //
- // return RT_EOK;
- //}
- //INIT_APP_EXPORT(led_init);
- #include <rtthread.h>
- #include <rtdevice.h>
- #include "signal_led.h"
- #include "env.h"
- /* defined the LED pin */
- #define LED_BOARD_PIN GET_PIN(B, 9)
- #define LED_GRN1_PIN GET_PIN(D, 1)
- //定义信号灯对象句柄
- static led_t *led_board = NULL;
- static led_t *led_green = NULL;
- //定义内存操作函数接口
- static led_mem_opreation_t led_mem_opreation;
- /* 设置信号灯一个周期内的闪烁模式
- * 格式为 “亮、灭、亮、灭、亮、灭 …………” 长度不限
- * 注意: 该配置单位为毫秒,且必须大于 “LED_TICK_TIME” 宏,且为整数倍(不为整数倍则向下取整处理)
- * 必须以英文逗号为间隔,且以英文逗号结尾,字符串内只允许有数字及逗号,不得有其他字符出现
- */
- const char *led_blink_mode_flash = "500,500"; //1Hz闪烁
- const char *led_blink_mode_off = "0,100"; //常灭
- const char *led_blink_mode_on = "100,0"; //常亮
- //定义开灯函数
- static void led_board_switch_on(void)
- {
- rt_pin_write(LED_BOARD_PIN, PIN_HIGH);
- }
- //定义关灯函数
- static void led_board_switch_off(void)
- {
- rt_pin_write(LED_BOARD_PIN, PIN_LOW);
- }
- //定义开灯函数
- static void led_grn_switch_on(void)
- {
- rt_pin_write(LED_GRN1_PIN, PIN_LOW);
- }
- //定义关灯函数
- static void led_grn_switch_off(void)
- {
- rt_pin_write(LED_GRN1_PIN, PIN_HIGH);
- }
- static void led_switch(void)
- {
- static uint16_t stat_last = 0;
- if (S.Status != stat_last)
- {
- switch(S.Status)
- {
- case STATUS_INIT:
- led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_off);
- break;
- case STATUS_RUN:
- case STATUS_READY:
- case STATUS_RUN_LOW_POWER:
- case STATUS_RUN_OBS_LOW_SPEED:
- led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_on);
- break;
- case STATUS_REMOTE_MANUAL:
- led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_off);
- break;
- default:
- led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_flash);
- break;
- }
- }
- stat_last = S.Status;
- }
- static void led_run(void *parameter)
- {
- while(1)
- {
- led_switch();
- led_ticks();
- rt_thread_mdelay(LED_TICK_TIME);
- }
- }
- int rt_led_timer_init(void)
- {
- rt_pin_mode(LED_BOARD_PIN, PIN_MODE_OUTPUT);
- rt_pin_mode(LED_GRN1_PIN, PIN_MODE_OUTPUT);
- /*自定义内存操作接口
- *注意:若要进行自定义内存操作,必须要在调用任何软件包内接口之前作设置,
- * 否则会出现不可意料的错误!!!
- */
- led_mem_opreation.malloc_fn = (void* (*)(size_t))rt_malloc;
- led_mem_opreation.free_fn = rt_free;
- led_set_mem_operation(&led_mem_opreation);
- //初始化信号灯对象
- led_board = led_create(led_board_switch_on, led_board_switch_off);
- led_green = led_create(led_grn_switch_on, led_grn_switch_off);
- //设置信号灯工作模式,循环十次
- led_set_mode(led_board, LOOP_PERMANENT, (void *)led_blink_mode_flash);
- led_set_mode(led_green, LOOP_PERMANENT, (void *)led_blink_mode_flash);
- //开启信号灯
- led_start(led_board);
- led_start(led_green);
- rt_thread_t tid = RT_NULL;
- tid = rt_thread_create("led",
- led_run,
- RT_NULL,
- 512,
- RT_THREAD_PRIORITY_MAX/2,
- 100);
- if (tid != RT_NULL)
- rt_thread_startup(tid);
- return RT_EOK;
- }
- INIT_APP_EXPORT(rt_led_timer_init);
|