chen
2024-07-29 55579b9ada2fc22edcae817e7d6e65710c47edd3
keil/include/main/main.c
@@ -49,71 +49,20 @@
#include "board.h"
#include "wsf_nvm.h"
#include "mk_power.h"
#include "mk_sleep_timer.h"
#include "Usart.h"
extern int simple_main(void);
extern void parameter_init(void);
uint8_t trx_buf[10] = {0};
#define TEST_UART_POLL_MODE 0
#define TEST_UART_INTERUPT_MODE 1
#define TEST_UART_DMA_MODE 2
#define TEST_UART_MODE TEST_UART_DMA_MODE
extern uint8_t mUsartReceivePack[100];
extern uint8_t mUsart2ReceivePack[100];
uint32_t dev_id;
uint8_t group_id;
uint16_t tag_frequency;
uint16_t disoffset;
void Program_Init(void)
{
Usart1ParseDataCallback = UsartParseDataHandler;
parameter_init_anchor();//g_com_map表初始化角色默认为基站
dev_id=g_com_map[DEV_ID];//这里不太对
group_id=g_com_map[GROUP_ID];//组ID
tag_frequency = 1000/g_com_map[COM_INTERVAL];//测距频率这个存的是测距时间
memcpy(&disoffset,&g_com_map[DIST_OFFSET],2);
}
static void uart_receive_callback(void *dev, uint32_t err_code)
{
}
int main(void)
//#define DEBUG_MODE
struct UART_CFG_T test_uart_cfg =
{
    board_clock_run();
    board_pins_config();
    board_debug_console_open(TRACE_PORT_UART0);
       // Reset reason
    reset_cause_get();
    reset_cause_clear();
    // Load calibration parameters from NVM
    uint32_t internal_flash = (REG_READ(0x40000018) >> 17) & 0x1;
    uint32_t external_flash = (REG_READ(0x40010030) >> 28) & 0x3;
    if (internal_flash || external_flash == 1)
    {
        WsfNvmInit();
        board_calibration_params_load();
        flash_close(FLASH_ID0);
    }
    else
    {
        board_calibration_params_default();
    }
    // Chip calibration
    calib_chip();
    // Disable watchdog timer
    wdt_close(WDT_ID0);
    LOG_INFO(TRACE_MODULE_APP, "UWB simple example\r\n");
    // open system timer
    //sys_timer_open();
    gpio_open();
    board_led_init();
       struct UART_CFG_T test_uart_cfg =
    {
        .parity = UART_PARITY_NONE,
        .stop = UART_STOP_BITS_1,
        .data = UART_DATA_BITS_8,
@@ -135,22 +84,157 @@
        .int_tx = false,
#endif
      };
       //flash_open(FLASH_ID0, NULL);
uint8_t state5v = 1;
uint8_t bat_percent=0,g_start_send_flag=1;
extern uint32_t dev_id;
extern uint8_t group_id;
uint8_t tag_frequence;
void UartDeinit(void);
void UartInit(void);
void Program_Init(void);
void IdleTask(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);
}
void UartInit(void)
{
board_pins_config();
uart_open(UART_ID1, &test_uart_cfg);
board_debug_console_open(TRACE_PORT_UART0);
uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
}
void UartDeinit(void)
{
uart_close(UART_ID0);
uart_close(UART_ID1);
}
static void sleep_timer_callback(void *dev, uint32_t time)
{
    //sleep_timer_start(__MS_TO_32K_CNT(1000));
      g_start_send_flag=1;
    LOG_INFO(TRACE_MODULE_APP, "Sleep timer interrupt callback\r\n");
}
static void voltage_input_handler(enum IO_PIN_T pin)
{
}
void Program_Init(void)
{
Usart1ParseDataCallback = UsartParseDataHandler;
parameter_init();//g_com_map表初始化
group_id=g_com_map[GROUP_ID];
memcpy(&dev_id ,&g_com_map[DEV_ID],2);
tag_frequence=1000/g_com_map[COM_INTERVAL];
}
void IdleTask(void)
{
   if(gpio_pin_get_val(INPUT_5V_Pin))
   {
    UART_CheckReceive();
      //UART_CheckSend();
// bat_percent=Get_Battary();
      if(state5v==0)
      {
         state5v=1;
         UartInit();
      }
//      if(bat_percent>99)
//      {
////         LED_LR_OFF;
////         LED_LG_ON;
//      }else{
////         LED_LR_ON;
////         LED_LG_OFF;
//      }
   }else{
        if(state5v==1)
        {
            state5v=0;
               //UartDeinit();
        }
//      LED_LR_OFF;
//      LED_LG_OFF;
}
//        if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0)
//      {
//            NVIC_SystemReset(); //软复位回到bootloader
//      }
}
int main(void)
{
    board_clock_run();
    board_pins_config();
    board_debug_console_open(TRACE_PORT_UART0);
       // Reset reason
    reset_cause_get();
    reset_cause_clear();
    // Load calibration parameters from NVM
    uint32_t internal_flash = (REG_READ(0x40000018) >> 17) & 0x1;
    uint32_t external_flash = (REG_READ(0x40010030) >> 28) & 0x3;
    if (internal_flash || external_flash == 1)
    {
        WsfNvmInit();
        board_calibration_params_load();
        flash_close(FLASH_ID0);
    }
    else
    {
        board_calibration_params_default();
    }
    // Chip calibration
    calib_chip();
    // Disable watchdog timer
    wdt_close(WDT_ID0);
    LOG_INFO(TRACE_MODULE_APP, "UWB simple example\r\n");
    // open system timer
    //sys_timer_open();
    gpio_open();
    //board_led_init();
       uart_open(UART_ID1, &test_uart_cfg);
         Program_Init();
       uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
            Program_Init();
       //power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)POWER_WAKEUP_BY_GPIO_0, POWER_WAKEUP_LEVEL_LOW);
       //uart_receive(UART_ID1, trx_buf, 1, uart_receive_callback);
//      board_led_off(BOARD_LED_1);
//      board_led_off(BOARD_LED_2);
       uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
      // Initialize low power mode
    power_init();
    // Enable sleep timer
    sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback);
      //sleep_timer_start(__MS_TO_32K_CNT(1000));
      board_5V_input_init(voltage_input_handler);
//    // run simple
    //simple_main();
    while (1)
    {
         UART_CheckReceive();
         if(g_start_send_flag)
         {
         //g_start_send_flag = 0;//测试
         //LOG_INFO(TRACE_MODULE_APP, "测距ing");
         //sleep_timer_start(__MS_TO_32K_CNT(1000));//测试
         simple_main();
         IdleTask();
         }else{
         IdleTask();
         }
#ifdef DEBUG_MODE
         if(!gpio_pin_get_val(INPUT_5V_Pin)){
                  trace_flush();
            uint32_t lock = int_lock();
                  LOG_INFO(TRACE_MODULE_APP, "进入低功耗");
                  //唤醒源设置MK8000修改
                  //board_5V_input_init(voltage_input_handler);
                  sleep_timer_start(__MS_TO_32K_CNT(1000));
            power_enter_power_down_mode(0);
            int_unlock(lock);
         }
#endif
    }
}