#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); } uint8_t data_temp,temp_bit; void IO_LED_control_change(uint8_t data) { data_temp=data; uint8_t temp; for(int i=0; i<8; i++) { temp=data&1; temp_bit=temp; 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|red_charge_state<<1|green_charge_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(); } void charge_red_on(void) { red_charge_state=1;//³äµçºìµÆÁÁÆð update_led_power_state(); } void charge_red_off(void) { red_charge_state=0;//³äµçºìµÆÏ¨Ãð update_led_power_state(); } void charge_green_on(void) { green_charge_state=1;//³äµçÂ̵ÆÁÁÆð update_led_power_state(); } void charge_green_off(void) { green_charge_state=0;//³äµçÂ̵ÆÏ¨Ãð update_led_power_state(); } void charge_state_change(void) { if(gpio_pin_get_val(INPUT_5V_Pin)) { if(bat_percent==100) { red_charge_state=0; green_charge_state=1; }else{ red_charge_state=1; green_charge_state=0; } enbale_blink_flag=0; update_led_power_state(); }else{ if(bat_percent>15) { charge_green_off(); charge_red_off(); enbale_blink_flag=0; }else{ // green_charge_state=0; // if(secondtask_count%2==0) // { // red_charge_state=0; // }else{ // red_charge_state=1; // } // update_led_power_state(); enbale_blink_flag=1; } } }