chen
2025-05-29 2b40605dbb9622b2099f7c4c6a628e40cd17e805
keil/include/main/main.c
@@ -68,7 +68,7 @@
uint8_t enable_sleep_count,sleep_flag;
uint32_t battery_get_count;
//#define DEBUG_MODE
uint32_t reboot_num;
struct UART_CFG_T test_uart_cfg =
{
        .parity = UART_PARITY_NONE,
@@ -118,7 +118,7 @@
        .callback = app_wdt_callback,
    };
uint8_t state5v = 1;
uint8_t state5v = 0;
uint8_t bat_percent=0,g_start_send_flag=1;
int16_t fVoltage_mv;
uint8_t bat_percent;
@@ -133,9 +133,10 @@
void boot_deinit(void);
void Get_batterty_Voltage(void);
void Calculate_battery_percent(void);
uint8_t sleep_limit_time=10;
static void uart_receive_callback(void *dev, uint32_t err_code)
{      
uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
uart_receive(UART_ID0,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
}
void UartInit(void)
{
@@ -149,12 +150,19 @@
uart_close(UART_ID0);
uart_close(UART_ID1);
}
uint8_t bat_flag;
void Get_batterty_Voltage(void)
{
    battery_monitor_open();
    fVoltage_mv=battery_monitor_get();
   battery_monitor_close();  
   Calculate_battery_percent();
   if(fVoltage_mv>=3200&&fVoltage_mv<=3400)
   {
   bat_flag=1;//正常
   }else{
   bat_flag=0;//不正常
   }
   //Calculate_battery_percent();
}
void Calculate_battery_percent(void)
{
@@ -170,15 +178,19 @@
        {
            bat_percent = ((fVoltage_mv - 3000) /8);
        }
            //LOG_INFO(TRACE_MODULE_APP, "The voltage is %d ,percent is %%%d \r\n",fVoltage_mv,bat_percent);
}
static void sleep_timer_callback(void *dev, uint32_t time)
{
    //sleep_timer_start(__MS_TO_32K_CNT(1000));
   static uint8_t lost_jumpcount=0;
   reboot_num++;
   if(reboot_num>=3600)
      NVIC_SystemReset(); //软复位回到bootloader
      enable_sleep_count++;
   if(enable_sleep_count==SLEEP_START_TIME){
   if(enable_sleep_count==sleep_limit_time){
      enable_sleep_count=0;
      sleep_flag=1;
   }
@@ -236,21 +248,25 @@
group_id=g_com_map[GROUP_ID];
memcpy(&dev_id ,&g_com_map[DEV_ID],2);
tag_frequency=1000/g_com_map[COM_INTERVAL];   
g_com_map[VERSION] = (1<<8)|5;
g_com_map[VERSION] = (1<<8)|12;
LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
LOG_INFO(TRACE_MODULE_APP,"固件版本:UWB-标签 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
LOG_INFO(TRACE_MODULE_APP,"固件版本:UWB-免布线信标 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
}
uint8_t test1;
extern uint8_t change_power_flag;
void IdleTask(void)
{ UART0_CheckReceive();
   test1=gpio_pin_get_val(INPUT_5V_Pin);
   if(gpio_pin_get_val(INPUT_5V_Pin))
   {
      //UART_CheckSend();
// bat_percent=Get_Battary();
      if(state5v==0)
      {
         state5v=1;
         sleep_flag=0;
         sleep_limit_time=30;//新增插入串口后30s不休眠
         enable_sleep_count=0;//重新插拔可以重置时间
      }   
   }else{
        if(state5v==1)
@@ -274,6 +290,12 @@
    uart_close(UART_ID1);//解绑原来串口1
    uart_close(UART_ID0);//解绑原来串口0
}
void power_mode_start(void)
{
LED_PA_change();//将PA管脚改为gpio模式发射载波开启功率测试
}
int main(void)
{
    board_clock_run();
@@ -335,14 +357,20 @@
   #endif
      //Serial0_PutString("进入app测试\r\n");
    while (1)
    {  wdt_ping(WDT_ID0);//喂狗
    {
         if(g_start_send_flag)
         {
         //LOG_INFO(TRACE_MODULE_APP, "测距ing");
         wdt_ping(WDT_ID0);//喂狗
         g_start_send_flag = 0;
         gpio_pin_set(LED_PIN);//亮
         if(!change_power_flag)
         TagRange();
         if(change_power_flag)
         {
         power_mode_start();
         uwb_power_init();
         }
         gpio_pin_clr(LED_PIN);//灭
         IdleTask();   
         }else{