From 9bd738443a77409f46f3447d46b3fa5f91b31309 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期一, 21 七月 2025 16:10:17 +0800 Subject: [PATCH] 增加读取时串口0回包引脚控制逻辑 --- keil/include/main/main.c | 163 ++++++++++++++++++++++++++++++----------------------- 1 files changed, 92 insertions(+), 71 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index 6c515de..c687682 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -136,7 +136,7 @@ .flow = UART_FLOW_CONTROL_NONE, .rx_level = UART_RXFIFO_CHAR_1, .tx_level = UART_TXFIFO_EMPTY, - .baud = BAUD_9600, + .baud = BAUD_115200, #if (TEST_UART_MODE == TEST_UART_POLL_MODE) .dma_en = false, .int_rx = false, @@ -151,9 +151,13 @@ .int_tx = false, #endif }; -void uart_receive_callback(void *dev, uint32_t err_code) +void uart0_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_EUART0_DMA_RXBuf,EUART0_RX_BUF_SIZE,uart0_receive_callback); +} +void uart1_receive_callback(void *dev, uint32_t err_code) +{ + uart_receive(UART_ID1,m_EUART1_DMA_RXBuf,EUART1_RX_BUF_SIZE,uart1_receive_callback); } void mcu_deep_sleep(void) { @@ -295,7 +299,10 @@ } #define BIND_COUNT_NUM 50 -uint8_t bind_flag,bind_count=BIND_COUNT_NUM; +uint8_t bind_flag; +int8_t bind_count=BIND_COUNT_NUM; +extern uint8_t find_flag; +uint8_t poll_count,poll_flag; void SecondTask(void) {static uint8_t second_count; if(second_count++>60) @@ -303,14 +310,17 @@ second_count = 0; MinuteTask(); } - if(bind_flag) - { - if(bind_count--<=0) - { - bind_count=BIND_COUNT_NUM; - bind_flag=0; - } - } + poll_flag=1; +// if(bind_flag) +// { +// if(bind_count--<=0) +// { +// bind_count=BIND_COUNT_NUM; +// copy_taglist_to_flash(); +// sys_reset(0); +// bind_flag=0; +// } +// } // //UWB状态检测 //if(!power_low_flag)//低供电下不需要检测重连 // { @@ -392,24 +402,20 @@ extern uint16_t ip0,ip1,ip2,ip3,port; extern uint8_t gps_4g_flag; extern uint8_t gps_need_data_flag,gps_open_flag; - +extern uint16_t bind_distance,button_determinate_distance,change_by_frequency_distance; +extern uint8_t tag_near_frequency; void Program_Init(void) { - Usart1ParseDataCallback = UsartParseDataHandler;//需改为默认为gps处理,UsartParseDataHandler为升级处理当调试时候改为 + Usart1ParseDataCallback = Usart1ParseDataHandler;//需改为默认为gps处理,Usart1ParseDataHandler为升级处理当调试时候改为 + Usart0ParseDataCallback=Usart0ParseDataHandler; 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); -// g_com_map[ALARM_DISTANCE1] = 40; -// g_com_map[ALARM_DISTANCE2] = 40; - warning_distance=g_com_map[ALARM_DISTANCE1]; - prewarning_distance=g_com_map[ALARM_DISTANCE2]; - send_struct.warnDistence=warning_distance; - send_struct.alarmDistence=prewarning_distance;//更新报警距离 - memcpy(&send_struct.gunLableId,&g_com_map[BIND_DEV_ID],2);//更新绑定ID - send_struct.tagId=dev_id;//更新设备ID - + memcpy(&bind_distance,&g_com_map[BIND_DISTANCE],2); + memcpy(&button_determinate_distance,&g_com_map[DETERMINATION_DISTANCE],2);//设定开关判断距离 + memcpy(&tag_near_frequency,&g_com_map[NERA_FREQUENCY],1);//设定附近HZ数 + memcpy(&change_by_frequency_distance,&g_com_map[FREQUENCY_DISTANCE],2);//设定修改HZ生效默认范围 if(g_com_map[BIND_DEV_ID]==0) { UWB_work_state = UN_BIND; @@ -431,9 +437,13 @@ 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)|0; + gpio_pin_set(CHANGE_UART_PIN);//;拉高打印输出 LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id); LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_无感闸机 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); + while(uart_tx_in_progress(UART_ID0)); + gpio_pin_clr(CHANGE_UART_PIN);//;拉低输入 + } @@ -463,27 +473,28 @@ } void IdleTask(void) { -if(read_5v_input_pca()) - { - if(state5v==0) - { - state5v=1; - state5V_prase_flag=state5v; - gps_prase_flag=0;//解除gps解析 - uart1_change_from_gps_to_debug();//测试 - PCA9555_Set_One_Value_Output(MCU_A,1);//输出高电平切换为5V输入 - } - }else { - if(state5v==1) - { - g_com_map[MODBUS_MODE] = 0; - state5v=0; - state5V_prase_flag=state5v; - gps_prase_flag=1;//恢复gps解析 - uart1_change_from_debug_to_gps();//测试 - PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS - } - } +//if(read_5v_input_pca()) +// { +// if(state5v==0) +// { +// state5v=1; +// state5V_prase_flag=state5v; +// gps_prase_flag=0;//解除gps解析 +// uart1_change_from_gps_to_debug();//测试 +// PCA9555_Set_One_Value_Output(MCU_A,1);//输出高电平切换为5V输入 +// } +// }else { +// if(state5v==1) +// { +// g_com_map[MODBUS_MODE] = 0; +// state5v=0; +// state5V_prase_flag=state5v; +// gps_prase_flag=1;//恢复gps解析 +// uart1_change_from_debug_to_gps();//测试 +// PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS +// } +// } + UART0_CheckReceive(); UART_CheckReceive(); } void boot_deinit(void) @@ -504,31 +515,33 @@ int tt2; int test1,test3; uint32_t test4; - +#define SLEEP_TIMER_NUM 1000 int main(void) { board_clock_run(); boot_deinit(); board_pins_config(); - board_debug_console_open_baud(TRACE_PORT_UART1,BAUD_115200); + board_debug_console_open_baud(TRACE_PORT_UART0,BAUD_115200); // Reset reason reset_cause_get(); reset_cause_clear(); //注意串口一波特率改为9600了为了能和GPS通信上 - // 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(); - } +// // 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(); +// } + // Load calibration parameters + board_calibration_params_load(); // Chip calibration calib_chip(); @@ -539,28 +552,36 @@ // open system timer //sys_timer_open(); gpio_open(); - LED_output_init();//配置彩色灯引脚 + LED_output_init();//配置串口控制脚 adc_open(&usr_adc_cfg); + Program_Init(); - //uart_open(UART_ID1, &test_uart_cfg); - // uart1_change_from_gps_to_debug(); - //Uart1GpsRecDebugSend(); - uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); - + + uart_open(UART_ID1, &test_uart_cfg); + uart_receive(UART_ID1,m_EUART1_DMA_RXBuf,EUART1_RX_BUF_SIZE,uart1_receive_callback); + uart_receive(UART_ID0,m_EUART0_DMA_RXBuf,EUART0_RX_BUF_SIZE,uart0_receive_callback); // Initialize low power mode power_init(); sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback); sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试 adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 - //board_acceleration_detection_init(move_handler); -// pca_input_detection_init(pca_handler);//pca检测输入 - //board_4GUsart_detection_init(_4gUsart_handler); - Uwb_init(); + uwb_open(); + Anchor_uwb_aoa_square_init(); + OpenUWB(); while (1) { uwb_app_poll(); + if(poll_flag) + { + CloseUWB();//关闭接收 + Tag_uwb_aoa_square_init(); + TagRange(); //做标签 + Anchor_uwb_aoa_square_init(); + poll_flag=0; + OpenUWB(); + } if(flag_secondtask) { flag_secondtask = 0; @@ -603,7 +624,7 @@ trace_flush(); lock = int_lock(); power_enter_power_down_mode(0); - uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); + uart_receive(UART_ID1,m_EUART1_DMA_RXBuf,EUART1_RX_BUF_SIZE,uart1_receive_callback); // test3=gpio_pin_get_val(_4G_USART_RX_Pin); //LOG_INFO(TRACE_MODULE_APP, "进入休眠\r\n"); int_unlock(lock); -- Gitblit v1.9.3