WXK
2025-02-11 e328ebef585cea2351b37117b2d5ac4978ecd3c0
keil/sn74hc595.c
@@ -1,29 +1,27 @@
#include "sn74hc595.h"
uint8_t QA,QB,QC,QD,QE,QF,QG,QH;
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_pull_set(SER_PIN , IO_PULL_UP, IO_PULL_UP_NONE);
//SRCLK  111
    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);
    io_pull_set(SRCLK_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL0);
//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);
    io_pull_set(RCLK_PIN , IO_PULL_UP, IO_PULL_UP_LEVEL0);
}
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;
        uint8_t temp=data&1;
        if(temp)//写入低位数据
            SER_1;
        else
@@ -42,9 +40,11 @@
    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;
                            //QA //QB  //QC //QD  //QE  //QF  //QG  //QH
    uint8_t control_state=QA<<7|QB<<6|QC<<5|QD<<4|QE<<3|QF<<2|QG<<1|QH;
    IO_LED_control_change(control_state);
}
void blink_led(uint8_t*state)
@@ -63,87 +63,84 @@
    update_led_power_state();
}
void gps_led_on(void)
//void motor_power_on(void)
//{
//    motor_power_state=1;//uwb亮起
//    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 MOTOR_QA_state(uint8_t state)
{
    gps_success_state=1;//uwb亮起
    QA=state;//QA高电平
    update_led_power_state();
}
void gps_led_off(void)
void QB_state(uint8_t state)
{
    gps_success_state=0;//uwb灭
    QB=state;//QA高电平
    update_led_power_state();
}
void uwb_led_on(void)
void QC_state(uint8_t state)
{
    uwb_state=1;//uwb亮起
    QC=state;//QA高电平
    update_led_power_state();
}
void uwb_led_off(void)
void RED_LED_QD_state(uint8_t state)
{
    uwb_state=0;//uwb灭
    QD=state;//QA高电平
    update_led_power_state();
}
void air780_led_on(void)
void GREEN_LED_QE_state(uint8_t state)
{
    air780_success_state=1;//uwb亮起
    QE=state;//QA高电平
    update_led_power_state();
}
void air780_led_off(void)
void BT_LED_QF_state(uint8_t state)
{
    air780_success_state=0;//uwb灭
    QF=state;//QA高电平
    update_led_power_state();
}
void charge_red_on(void)
void LORA_LED_QG_state(uint8_t state)
{
      red_charge_state=1;//充电红灯亮起
    QG=state;//QA高电平
    update_led_power_state();
}
void charge_red_off(void)
void UWB_LED_QH_state(uint8_t state)
{
      red_charge_state=0;//充电红灯熄灭
    QH=state;//QA高电平
    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;
                  }
         }
}
//void QA_OFF(void)
//{
//    QA=0;//QA高电平
//    update_led_power_state();
//}