WXK
2025-08-12 de981d775c77551692b618ba9bfe60d5cd7f1532
keil/include/main/main.c
@@ -68,7 +68,7 @@
#include "mk_phy.h"
#include "mk_pwm.h"
//#define DEBUG_MODE
#define DEBUG_MODE
extern int simple_main(void);
extern int temp_main(void);
void uart_change_check(uint16_t gpio_state);
@@ -339,6 +339,7 @@
   }
   //uart_change_check(gpio_state);
}
extern  float motor_keeptime;
uint8_t Get_anchor_appdata_flag;
uint8_t Get_anchor_appdata_num;
extern uint8_t update_tag_time;
@@ -355,7 +356,7 @@
    sleep_flag=1;
    }
    
    motor_keeptime--;
    g_start_send_flag=1;
//    if(delaysleep_count>0)
//    delaysleep_count--;
@@ -366,6 +367,8 @@
{
    nomove_count=0;
    Motion_Detection_callback();
    gpio_pin_toggle(IO_PIN_7);//亮
    motor_keeptime=3;
}
static void pca_handler(enum IO_PIN_T pin)
{
@@ -420,16 +423,16 @@
    ip2 = (g_com_map[TCP_IP_2]>>12&0xf)*1000+(g_com_map[TCP_IP_2]>>8&0xf)*100+(g_com_map[TCP_IP_2]>>4&0xf)*10+(g_com_map[TCP_IP_2]&0xf);
    ip3 = (g_com_map[TCP_IP_3]>>12&0xf)*1000+(g_com_map[TCP_IP_3]>>8&0xf)*100+(g_com_map[TCP_IP_3]>>4&0xf)*10+(g_com_map[TCP_IP_3]&0xf);
    port = g_com_map[TCP_PORT];
    g_com_map[VERSION] = (1<<8)|1;
    g_com_map[VERSION] = (1<<8)|4;
    LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
    LOG_INFO(TRACE_MODULE_APP,"固件版本:4G-GPS定位手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
    LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port);
}
}
extern uint8_t motor_state;
extern  float motor_keeptime;
uint8_t test1;
void IdleTask(void)
{
    g_com_map[MOTOR_ENABLE]=1;
    if(g_com_map[MOTOR_ENABLE])
    {
            if(motor_keeptime>0)
@@ -605,43 +608,6 @@
    uint32_t tx_en_start_u32;
    uint32_t tx_en_start_u321;
uint8_t baifenbi=5;
void Lora_upanc_ing_Poll( void )
{   uint16_t crc16;
//    if(Lora_upanc_flag==1)
//    {
//        Lora_deinit_Poll();
        if(Lora_qingqiu_flag==1)
        {
            CloseUWB();
//            mubiao_anchor_ID=0x1872;
            final_bag_num=(g_com_map[YAOGEIANC_UPWENJIAN_DAXIAO]/ONE_BAG_DAXIAO)+1;//计算一共要发都是包
//            final_bag_num=651;
            Lora_qingqiu_flag=0;
            send_lora_data[MSG_TYPE_IDX]=LORA_MSGTYPE_UPDATEFILE_RESP;//LORA MSG TYPE 定义
            memcpy(&send_lora_data[SOURCE_ID_IDX],&dev_id,2);//自己ID 占用2个字节
            memcpy(&send_lora_data[DEST_ID_IDX],&mubiao_anchor_ID,2);//标签或者基站的设备ID 2个字节
            memcpy(&send_lora_data[MUQIAN_BAG],&Lora_qingqiu_bao,2);
            memcpy(&send_lora_data[DATA_IDX], (HIDO_VOID *)(APP_CONFIG_APPLICATION_ADDRESS+Lora_qingqiu_bao*ONE_BAG_DAXIAO), ONE_BAG_DAXIAO);
            crc16=Cal_CRC16(send_lora_data,DATA_IDX+ONE_BAG_DAXIAO);
            memcpy(&send_lora_data[DATA_IDX+ONE_BAG_DAXIAO],&crc16,2);
//            Lora_status=1;
            jindu=(Lora_qingqiu_bao*100)/final_bag_num;
//            LOG_INFO(TRACE_MODULE_APP, "升级进度%d\r\n",jindu);
            Dtu_shengji_jindu[4]=jindu;
            memcpy(&Dtu_shengji_jindu[5],&mubiao_anchor_ID,2);
            if(jindu>baifenbi)
            {
            uart_send(UART_ID0, Dtu_shengji_jindu,9, NULL);
                baifenbi=baifenbi+10;
            }
            tx_en_start_u32 = phy_timer_count_get()+US_TO_PHY_TIMER_COUNT(100U);//发送必须要延时发送才可以用于测距否则立即发送会获取时间戳不对,需要计算程序运行时间,避免设置过去时间
            tempflag=uwb_tx(send_lora_data,DATA_IDX+ONE_BAG_DAXIAO+2+2,1,tx_en_start_u32);//立即发送
            tx_en_start_u321= phy_timer_count_get();
//            while(mac_is_busy());//等待发送完成
        }
//    }
}
static void pwm_callback(void *dev, uint32_t status)
{
//    uint8_t id = *(uint8_t *)dev;
@@ -721,28 +687,15 @@
        if(g_start_send_flag)
        {
            g_start_send_flag = 0;
            gpio_pin_set(IO_PIN_7);//亮
          SwitchTagState();
            gpio_pin_clr(IO_PIN_7);//灭
//            gpio_pin_set(IO_PIN_7);//亮
////          SwitchTagState();
//            gpio_pin_clr(IO_PIN_7);//灭
        }
//            PowerTask();
            IMUTask();
//            UserKeyTask();
        IdleTask();
#ifndef DEBUG_MODE
         if(sleep_flag&&state5v==0){//开始一段时间无休眠
                  trace_flush();
            uint32_t lock = int_lock();
                  //LOG_INFO(TRACE_MODULE_APP, "进入低功耗");
                  //唤醒源设置MK8000修改
                  //board_5V_input_init(voltage_input_handler);
                  //sleep_timer_start(g_com_map[COM_INTERVAL]);
            power_enter_power_down_mode(0);
                  uart_receive(UART_ID0,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
               //LOG_INFO(TRACE_MODULE_APP, "进入低功耗");
            int_unlock(lock);
         }
#endif
//        LoraUp_Poll();
    }
}