| | |
| | | #define SLEEP_START_TIME 10 |
| | | #define FREQ_LOST_TIME 5 |
| | | #define NOTAG_FREQ 1 |
| | | #define BATTERY_GET_TIME 3600 |
| | | uint8_t enable_sleep_count,sleep_flag; |
| | | uint32_t battery_get_count; |
| | | //#define DEBUG_MODE |
| | | |
| | | struct UART_CFG_T test_uart_cfg = |
| | |
| | | .int_tx = false, |
| | | #endif |
| | | }; |
| | | |
| | | static void app_wdt_callback(void *dev, uint32_t status) |
| | | { |
| | | ASSERT(status, "WDT TIMEOUT,程序复位"); |
| | | //LOG_INFO(TRACE_MODULE_APP, "程序卡死,看门狗复位"); |
| | | } |
| | | static uint32_t sample[NUM_SAMPLES] = {0}; |
| | | static struct ADC_CFG_T usr_adc_cfg = { |
| | | .mode = ADC_MODE_CONTINUE, /* Selected single conversion mode */ |
| | |
| | | .high_pulse_time = 4, |
| | | .settle_time = 1, |
| | | }; |
| | | struct WDT_CFG_T app_wdt_cfg = { |
| | | .timeout = 32768 * 30, |
| | | .rst_en = true, |
| | | .int_en = true, |
| | | .callback = app_wdt_callback, |
| | | }; |
| | | |
| | | uint8_t state5v = 1; |
| | | uint8_t bat_percent=0,g_start_send_flag=1; |
| | |
| | | void Program_Init(void); |
| | | void IdleTask(void); |
| | | void boot_deinit(void); |
| | | void Get_batterty_Voltage(void); |
| | | void Calculate_battery_percent(void); |
| | | 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_close(UART_ID0); |
| | | uart_close(UART_ID1); |
| | | } |
| | | void Get_batterty_Voltage(void) |
| | | { |
| | | battery_monitor_open(); |
| | | fVoltage_mv=battery_monitor_get(); |
| | | battery_monitor_close(); |
| | | Calculate_battery_percent(); |
| | | } |
| | | void Calculate_battery_percent(void) |
| | | { |
| | | if(fVoltage_mv < 3000) |
| | | { |
| | | bat_percent = 0; |
| | | } |
| | | else if(fVoltage_mv > 3500) |
| | | { |
| | | bat_percent = 100; |
| | | } |
| | | else |
| | | { |
| | | 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)); |
| | |
| | | |
| | | enable_sleep_count=0; |
| | | sleep_flag=1; |
| | | } |
| | | if(battery_get_count++>=BATTERY_GET_TIME) |
| | | { |
| | | Get_batterty_Voltage(); |
| | | battery_get_count=0; |
| | | } |
| | | // if(freqlost_count++>FREQ_LOST_TIME) |
| | | // { |
| | |
| | | bat_percent = ((fVoltage_mv - 3300) /8); |
| | | } |
| | | } |
| | | LOG_INFO(TRACE_MODULE_APP, "The voltage is %%%d \r\n",bat_percent); |
| | | //LOG_INFO(TRACE_MODULE_APP, "The voltage is %%%d \r\n",bat_percent); |
| | | } |
| | | |
| | | static void voltage_input_handler(enum IO_PIN_T pin) |
| | | { |
| | | //LOG_INFO(TRACE_MODULE_APP, "中断唤醒\r\n"); |
| | |
| | | |
| | | // Disable watchdog timer |
| | | wdt_close(WDT_ID0); |
| | | wdt_open(WDT_ID0,&app_wdt_cfg);//30s最大上限检测喂狗 |
| | | //LOG_INFO(TRACE_MODULE_APP, "UWB qiang test example\r\n"); |
| | | |
| | | // open system timer |
| | |
| | | uart_receive(UART_ID0,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | // Initialize low power mode |
| | | power_init(); |
| | | Get_batterty_Voltage();//获取当前内部电压 |
| | | //Calculate_battery_percent(); |
| | | //adc_open(&usr_adc_cfg); |
| | | //adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 |
| | | // Enable sleep timer |
| | |
| | | #endif |
| | | //Serial0_PutString("进入app测试\r\n"); |
| | | while (1) |
| | | { |
| | | { wdt_ping(WDT_ID0);//喂狗 |
| | | if(g_start_send_flag) |
| | | { |
| | | //LOG_INFO(TRACE_MODULE_APP, "测距ing"); |
| | |
| | | }else{ |
| | | IdleTask(); |
| | | } |
| | | LoraUp_Poll(); |
| | | #ifndef DEBUG_MODE |
| | | if(sleep_flag){//开始一段时间无休眠 |
| | | trace_flush(); |