| | |
| | | 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); |
| | | 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); |
| | | 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); |
| | | 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; |
| | | 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; |
| | | updata_led_power_state();//更新控制引脚 |
| | | gps_power_state=gps_state; |
| | | air780_power_state=air_state; |
| | | update_led_power_state();//更新控制引脚 |
| | | } |
| | | void updata_led_power_state(void) |
| | | 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); |
| | | 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) |
| | | {*state=~*state; |
| | | updata_led_power_state(); |
| | | delay_us(100); |
| | | *state=~*state; |
| | | updata_led_power_state(); |
| | | { if(*state==0) |
| | | *state=1; |
| | | else { |
| | | *state=0; |
| | | } |
| | | update_led_power_state(); |
| | | delay_us(100); |
| | | if(*state==0) |
| | | *state=1; |
| | | else { |
| | | *state=0; |
| | | } |
| | | update_led_power_state(); |
| | | } |
| | | void uwb_led_on(void) |
| | | { |
| | | uwb_state=1;//uwb亮起 |
| | | updata_led_power_state(); |
| | | uwb_state=1;//uwb亮起 |
| | | update_led_power_state(); |
| | | } |
| | | void uwb_led_off(void) |
| | | { |
| | | uwb_state=0;//uwb灭 |
| | | updata_led_power_state(); |
| | | uwb_state=0;//uwb灭 |
| | | update_led_power_state(); |
| | | } |