yincheng.zhong
2024-09-03 9b59e87d8280de129c18421b5d12cf96d0ea904e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
#include "sn74hc595.h"
void IO_control_init(void)
{
//SDA->SER
    io_open_drain_set(SER_PIN, 0);
    io_pin_mux_set(SER_PIN,IO_FUNC0);//°ÑÔ­ÏÈio SDA±äΪÆÕͨGPIO
    gpio_pin_set_dir(SER_PIN , GPIO_DIR_OUT, 0);//¸´ÓÃÔ­ÏÈGPIOÒý½ÅΪSER
    io_pull_set(SER_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
//SRCLK
    io_pin_mux_set(SRCLK_PIN,IO_FUNC0);
    gpio_pin_set_dir(SRCLK_PIN , GPIO_DIR_OUT, 0);
    io_pull_set(SRCLK_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
//RCLK
    io_pin_mux_set(RCLK_PIN,IO_FUNC0);
    gpio_pin_set_dir(RCLK_PIN , GPIO_DIR_OUT, 0);
    io_pull_set(RCLK_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
}
 
void IO_LED_control_change(uint8_t data)
{
    for(int i=0; i<8; i++) {
        uint8_t temp=data&1;
        if(temp)//дÈëµÍλÊý¾Ý
            SER_1;
        else
            SER_0;
        SRCLK_1;//½«Êý¾Ý·ÅÈëÒÆÎ»¼Ä´æÆ÷
        SRCLK_0;
        data>>=1;
    }
    RCLK_1;//½«Êý¾Ý´æÈë´æ´¢Æ÷²¢Êä³ö
    RCLK_0;
}
//¸ßµçƽ¿ªÆôpower£¬µÍµçƽ¹Ø±Õpower
void gps_air780_power_change(uint8_t gps_state,uint8_t air_state)
{
    gps_power_state=gps_state;
    air780_power_state=air_state;
    update_led_power_state();//¸üпØÖÆÒý½Å
}
void update_led_power_state(void)
{
    uint8_t control_state=air780_power_state<<7|gps_power_state<<6|motor_power_state<<5|uwb_state<<4|gps_success_state<<3|air780_success_state<<2|chaging_state<<1|changed_state;
    IO_LED_control_change(control_state);
}
void blink_led(uint8_t*state)
{   if(*state==0)
        *state=1;
    else {
        *state=0;
    }
    update_led_power_state();
    delay_us(1000);
    if(*state==0)
        *state=1;
    else {
        *state=0;
    }
    update_led_power_state();
}
 
void gps_led_on(void)
{
    gps_success_state=1;//uwbÁÁÆð
    update_led_power_state();
}
void gps_led_off(void)
{
    gps_success_state=0;//uwbÃð
    update_led_power_state();
}
void uwb_led_on(void)
{
    uwb_state=1;//uwbÁÁÆð
    update_led_power_state();
}
void uwb_led_off(void)
{
    uwb_state=0;//uwbÃð
    update_led_power_state();
}
void air780_led_on(void)
{
    air780_success_state=1;//uwbÁÁÆð
    update_led_power_state();
}
void air780_led_off(void)
{
    air780_success_state=0;//uwbÃð
    update_led_power_state();
}