#include "base.h" // #define USE_USB_HS extern osSemaphoreId_t elog_dma_lockHandle; int _write(int fd, char *ch, int len) { // HAL_UART_Transmit(&huart1, (uint8_t *)ch, len, 0xFFFF); if (osOK == osSemaphoreAcquire(elog_dma_lockHandle, osWaitForever)) { HAL_UART_Transmit_DMA(&huart2, (uint8_t *)ch, len); } return len; } extern struct led led_0; // extern struct led led_1; // extern osTimerId_t myTimer01Handle; // uint8_t send_buf[8] = {0x01,0x03,0x00,0x00,0x00,0x04,0x44,0x09}; uint8_t send_buf[24] = {0x01,0x03,0x00,0x00,0x00,0x04,0x44,0x09,0x01,0x03,0x00,0x00,0x00,0x04,0x44,0x09,0x01,0x03,0x00,0x00,0x00,0x04,0x44,0x09}; // uint8_t rcv_buf[14] = {0}; // uint8_t rcv_buf_2[13] = {0}; // uint8_t wk2xxx_rcvbuf[1024] ={ 0}; WK2114_Sub_Uart_TypeDef *sub_uart1 = NULL; uint8_t sub_uart1_receive_buf[1024]; void MY_INIT( ) { // max3243_enable( ); // 使能 3243 供电 // uart2_power_enable( ); // uart3_power_enable( ); // uart4_power_enable( ); // uart6_power_enable( ); // usart6_receive_enable(); } void measureTimer_Callback(void *argument) { log_i("measure timer begin .... " ); led_set_state( &led_0, LED_STATE_FLICKER_QUICK ); int st ; st = wk2114_sub_uart_send( wk2114->sub_uart[0], send_buf, sizeof(send_buf) ); log_e("send_buf ok addr %d .... st %d " ,send_buf, st); // osEventFlagsSet(wk2114EventHandle, // MODULE_WK2114_EVENT_EXTI_IT_SOURCE_SENDING); // sc6.start(); // oscar.start(); // ph.start(); // // my_ads1115.start(); // memset((void* )result, 0 , 12); } void measureTask(void *argument) { int step =0; for (;;) { osDelay(40); } } static void Default_Task_Init() { // measuring_flag = 0; uint64_t ticks = 0; if ( 0 == Led_Port() ) { log_i("Led Port int Ok .... "); } led_set_state( &led_0, LED_STATE_FLICKER_SLOW ); //WK2xxx 初始化 if(0==WK2114_Init()) { log_d("wk2114 Init Ok..."); }else{ log_w("wk2114 Init Failure..."); } // 启动任务, 多次重试baud WK2114_Port(); // 状态机初始化 wk2114->state= WK2114_WORK_STATE_START; while( wk2114->state!=WK2114_WORK_TEST_OK ) {osDelay(1);} log_d("wk2114 test ok..."); wk2114->state= WK2114_WORK_STATE_ADD_SUB_UART; while( wk2114->state!=WK2114_WORK_STATE_OK ) {osDelay(1);} log_d("wk2114 init subuart ok..."); // HAL_Delay(2000); // wk2114_mainport_rcv( wk2114); // osEventFlagsSet(wk2114EventHandle, // MODULE_WK2114_EVENT_EXTI_IT_SOURCE_SENDING); // int st; // // memset(rcvbuf, 0, 1024); // // __HAL_UART_ENABLE_IT(pWK2114Uart, UART_IT_IDLE); // // st =HAL_UART_Receive_DMA(pWK2114Uart, rcvbuf, 1024); // wk2114_read_global_reg( wk2114, 0x00); // // osDelay(1); // // // wk2114->cmd = (WK2114_CMD_READ_REG<<6)+WK2114_G_REG_GIFR; // // HAL_UART_Transmit(pWK2114Uart, &wk2114->cmd, 1, 0xFFF); // st = HAL_UART_Receive(pWK2114Uart, &wk2114->reg_readout, 1 , 0xFFF); // log_i(" wk2114->reg_readout 0x%02X st %d ", wk2114->reg_readout,st); // wk2114_inter_callback( wk2114); // // 注册子串口,初始化 // sub_uart1 = (WK2114_Sub_Uart_TypeDef *)malloc(sizeof(WK2114_Sub_Uart_TypeDef)); // if (0!=wk2114_sub_uart_register(wk2114, sub_uart1,WK2114_S_UART_1,sub_uart1_receive_buf,1024, &huart2, Sub_rcv_callback)) // { // log_e("sub-uart 1 register Failure ! "); // }; // if (0!=wk2114_sub_uart_init( sub_uart1,115200,WK2114_SUB_UART_MODE_MASK_TX|WK2114_SUB_UART_MODE_MASK_RX,WK2114_SUB_UART_FIFO_MODE_MASK_TX|WK2114_SUB_UART_FIFO_MODE_MASK_RX,WK2114_UART_PARITY_NONE,WK2114_UART_STOP_BITS_1)) // { // log_e("sub-uart 1 init Failure ! "); // } // log_w( " sub uart init ok .... " ); // log_w( " --->>>> count %d " , osMessageQueueGetCount(wk2114->cmd_queue) ); // memset(rcvbuf, 0, 1024); // __HAL_UART_ENABLE_IT(pWK2114Uart, UART_IT_IDLE); // HAL_UART_Receive_DMA(pWK2114Uart, rcvbuf, 1024); // while (osMessageQueueGetCount(wk2114->cmd_queue) > 0) // { // wk2114_send(wk2114); // } // log_i("sub-uart 1 init success ! "); // // 启动任务 // WK2114_Port(); // // 状态机初始化 // wk2114->state= WK2114_WORK_STATE_START; // if ( 0 == ds1302_port() ) // { // log_i("ds1302 init Ok .... "); // } // ph.init(); // ph.port(); // ph.test(); // viper.init(); // viper.port(); // viper.test(); // oscar.init(); // oscar.port(); // oscar.test(); // sc6.init(); // sc6.port(); // sc6.test(); // ramses.init(); // ramses.port(); // ramses.test(); // wh_lte.init(); // wh_lte.port(); // wh_lte.start(); // wk2114.init(); // wh_lte.port(); // wh_lte.start(); // ticks = osKernelGetTickCount(); // while ( viper.state!=Viper_State_Ready ) // { // if ( ( osKernelGetTickCount() -ticks) > 3000 ) // { // log_e(" VIPER_ state error.... ") ; // break; // } // osDelay(10); // } // log_d(" VIPER_ state OK.... ") ; // Modbus_Port( ); RTOS_Port( ); extern osTimerId_t measureTimerHandle; osTimerStart( measureTimerHandle, 5000 ); } void StartDefaultTask(void *argument) { HAL_GPIO_WritePin( LED0_GPIO_Port,LED0_Pin,RESET); // max3243_enable( ); Init_Logger(); log_i(" ****** System is initiating ****** "); Default_Task_Init(); for (;;) { // log_i("looo... "); osDelay(1000 ); // log_i(" aa bb cc dd : %d %d %d %d ",aa, bb, cc, dd ); } } void HAL_GPIO_EXTI_Callback(uint16_t GPIO_pin) { // log_i( " irq ..... %d ",osKernelGetTickCount() ); } // void EXTI9_5_IRQHandler(void) // { // log_i( " irq ..... %d ",osKernelGetTickCount() ); // // if( (osEventFlagsGet(wk2114EventHandle) & MODULE_WK2114_EVENT_EXTI_IT_SOURCE_SENDING) !=0){ // // return; // // } // // osEventFlagsSet(wk2114EventHandle, MODULE_WK2114_EVENT_EXTI_IT_SOURCE_SENDING); // // log_i( " exti ..... %d ",osKernelGetTickCount() ); // // HAL_GPIO_EXTI_IRQHandler(WK2114_INT_Pin); // // if(__HAL_GPIO_EXTI_GET_IT(WK2XXX_INT_GPIO_PIN) != RESET) // // { // // // 在中断处理函数中对GT911的寄存器0X814E写0 // // log_i("WK2XXX_INT_IRQHandler ......"); // // // GTP_TouchProcess(); // // // INT_Callback(); // // __HAL_GPIO_EXTI_CLEAR_IT(WK2XXX_INT_GPIO_PIN); // // } // } void Soft_Reboot() { __set_FAULTMASK(1);//关闭总中断 NVIC_SystemReset();//请求单片机重启 } /* // printf("test.... \r\n"); // printf ( "max3243 ... %d \r\n", HAL_GPIO_ReadPin( MAX3242_EN_GPIO_Port,MAX3242_EN_Pin)); // HAL_UART_Transmit(&huart1, pH_send_buf, 8,1000); // HAL_UART_Transmit(&huart2, pH_send_buf, 8,1000); // HAL_UART_Transmit(&huart4, pH_send_buf, 8,1000); // usart6_send_enable(); // HAL_UART_Transmit(&huart6, pH_send_buf, 8,1000); log_i("test uart2 .... "); HAL_GPIO_WritePin(UART_EN_GPIO_Port,UART_EN_Pin, SET); HAL_UART_Transmit(&huart2, (uint8_t*)"usart2\r\n", 8,0xFF); HAL_UART_Transmit_IT(&huart4, send_buf, 8 ); // while ( __HAL_UART_GET_FLAG(&huart4, UART_FLAG_TC) == RESET); // HAL_UART_Receive_IT(&huart4, rcv_buf_2, 13 ); // HAL_GPIO_WritePin(UART_EN_GPIO_Port,UART_EN_Pin,RESET); log_i("test uart6 485.... "); HAL_GPIO_WritePin(R_W_GPIO_Port,R_W_Pin, SET); // HAL_UART_Transmit(&huart6, (uint8_t*)"uart66\r\n", 8,0xFF); HAL_UART_Transmit_IT(&huart6, send_buf, 8 ); while ( __HAL_UART_GET_FLAG(&huart6, UART_FLAG_TC) == RESET); HAL_GPIO_WritePin(R_W_GPIO_Port,R_W_Pin,RESET); HAL_UART_Receive_IT(&huart6, rcv_buf, 13 ); // log_i("test uart3 3160 232.... "); // HAL_GPIO_WritePin(SEL_232_485_GPIO_Port,SEL_232_485_Pin, RESET); // HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, RESET); // // HAL_UART_Transmit(&huart3, (uint8_t*)"uart3160\r\n", 10,0xFF); // // HAL_UART_Transmit(&huart3, send_buf, 8,0xFF); // HAL_UART_Receive_IT(&huart3, rcv_buf_2, 13 ); // HAL_UART_Transmit_IT(&huart3, send_buf, 8 ); // while ( __HAL_UART_GET_FLAG(&huart3, UART_FLAG_TC) == RESET); // log_i("test uart3 3160 485.... "); // HAL_GPIO_WritePin(SEL_232_485_GPIO_Port,SEL_232_485_Pin, SET); // HAL_GPIO_WritePin(DE485_GPIO_Port, DE485_Pin, RESET); // HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, SET); // // HAL_UART_Transmit(&huart3, (uint8_t*)"uart3160\r\n", 10,0xFF); // // HAL_UART_Transmit(&huart3, send_buf, 8,0xFF); // // HAL_UART_Receive_IT(&huart3, rcv_buf_2, 13 ); // HAL_UART_Transmit_IT(&huart3, send_buf, 8 ); // while ( __HAL_UART_GET_FLAG(&huart3, UART_FLAG_TC) == RESET); // HAL_GPIO_WritePin(DE485_GPIO_Port, DE485_Pin, SET); // HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, RESET); // // HAL_UART_Receive_IT (&huart3, rcv_buf_2,2 ); // if ( HAL_UART_Receive (&huart3, rcv_buf_2, 2 ,2000) ==HAL_OK) // { // log_i("rcv ok"); // } // log_i( "rcvbuf : %d %d %d", rcv_buf_2[0], rcv_buf_2[1], rcv_buf_2[2]); // HAL_GPIO_WritePin(DE485_GPIO_Port, DE485_Pin, SET); // HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, RESET); */ // void measureTimer_Callback(void *argument) // { // log_i("measure timer begin .... " ); // // led_set_state( &led_0, LED_STATE_FLICKER_QUICK ); // // voltage = 0.0; // // H2S = 0.0; // // memset(pH_rcv_buf, 0, 9 ); // // memset(result, 0, 12 ); // // timebase = osKernelGetTickCount(); // // measuring_flag = 1; // // pH_send_flag = 0; // // pH_rcv_flag = 0; // // pH_measuring_flag = 0; // // pH_measure_ok = 0; // // voltage_measure_ok = 0; // // measure_step = 0; // } // void pH_Task(void *argument) // { // max3160_485_receive_mode(); // for(;;) // { // // if ( pH_measure_ok ==0 && pH_send_flag == 0) // // { // // log_i(" send stage ... "); // // HAL_UART_Receive_DMA(&huart3, pH_rcv_buf, 9 ); // // timebase = osKernelGetTickCount(); // // max3160_485_send_mode(); // // pH_send_flag = 1; // // HAL_UART_Transmit_DMA(&huart3, pH_send_buf, 8 ); // // } // // if ( pH_measure_ok ==0 && pH_send_flag == 1 && pH_rcv_flag == 0 ) // // { // // uint64_t time_ticks = osKernelGetTickCount() ; // // // log_i( " time_ticks :%d " , time_ticks); // // if ( (time_ticks - timebase ) >400) // // { // // log_i( " pH timeout ..... " ); // // measureTimer_Callback(NULL); // // } // // } // // if ( pH_measure_ok ==0 && pH_rcv_flag == 1 ) // // { // // log_i( " pH ok ..... " ); // // pH_measure_ok = 1; // // } // // if ( pH_measure_ok ==1 ) // // { // // ; // // } // osDelay(50); // } // } // void Measure_Task(void *argument) // { // for (;;) // { // // /* convert */ // // if ( measure_step==0 && pH_measure_ok == 1 && voltage_measure_ok == 1 ) // // { // // /** TODO ...*/ // // result[1] = (pH_rcv_buf[5]*256 + pH_rcv_buf[6])/10.0; /* Temp /10.0*/ // // result[2] = (pH_rcv_buf[3]*256 + pH_rcv_buf[4])/100.0; /* pH /10.0*/ // // // log_i( " temperature :%.6f pH : %.6f " , temperature ,pH_value); // // get_h2s_2(&H2S_concentration , voltage, result[1]); // // result[0] = H2S_concentration; // // led_set_state(&led_0, LED_STATE_FLICKER_SLOW); // // // log_i( "H2S : %.6f " ,H2S); // // measure_step++; // // } // // /* 写modbus数据 */ // // if ( measure_step==1 ) // // { // // /* 写modbus 临界区 */ // // log_i( "-------> H2S: %.6f TEMP: %.6f pH: %.6f ", result[0] , result[1], result[2]); // // // 数据全反过来 40db851f41a80000402771f2 -》 f2712740......// // // Modbus_Set_HoldingBuff( (uint8_t *)result, 12, 0); // // measure_step++; // // /*pH 686 : 40db851f 41a80000 402771f2 */ // // } // // /* 输出数据 uart1 */ // // if ( measure_step==2 ) // // { // // log_i( "send to screen... " ); // // int ret= HAL_UART_Transmit_IT(&huart1, (uint8_t *)result, 12); // // if( ret==HAL_OK) // // log_i( "send ok.. " ); // // measure_step++; // // } // // if ( measure_step==3 ) // // { // // osDelay(2); // // } // osDelay(20); // } // } // if ( 0 == ads1115_test(hi2c1) ) // { // log_i("ads1115 test Ok .... "); // }else{ // log_i("ads1115 test failure .... "); // }