// // Created by hu123456 on 2024/2/20. // #include "Usart1.h" #include "stdio.h" #include #if USART_EN_RX uint16_t g_usart_rx_sta = 0; uint8_t g_usart_rx_buf[USART_REC_LEN]; uint8_t g_rx_buffer[RXBUFFERSIZE]; void set_pid(); void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance == USART1) { if((g_usart_rx_sta & 0x8000) == 0) { if(g_usart_rx_sta & 0x4000) { if(g_rx_buffer[0] != 0x0a) { g_usart_rx_sta = 0; } else { g_usart_rx_sta |= 0x8000; } } else { if(g_rx_buffer[0] == 0x0d) { g_usart_rx_sta |= 0x4000; } else { g_usart_rx_buf[g_usart_rx_sta & 0X3FFF] = g_rx_buffer[0] ; g_usart_rx_sta++; if(g_usart_rx_sta > (USART_REC_LEN - 1)) { g_usart_rx_sta = 0; } } } } HAL_UART_Receive_IT(&huart1, (uint8_t *)g_rx_buffer, RXBUFFERSIZE); } } #endif //xzp1.16 void commander_run(void) { if((g_usart_rx_sta&0x8000)!=0) { switch(g_usart_rx_buf[0]) { case 'H': printf("Hello World!\r\n"); break; case 'x': //T6.28 set_pid(); break; case 'y': set_pid(); break; } g_usart_rx_sta=0; } } void set_pid() { float a =0; if(g_usart_rx_buf[1] == 'z') { switch (g_usart_rx_buf[2]) { case 'p': a = atof((const char *) (g_usart_rx_buf + 3)); printf("xzp:%f\r\n",a); break; case 'i': FOCStruct_X.ZT_KI = atof((const char *) (g_usart_rx_buf + 3)); printf("xzi:%f\r\n",FOCStruct_X.ZT_KP); break; case 'd': FOCStruct_X.ZT_KD = atof((const char *) (g_usart_rx_buf + 3)); printf("xzd:%f\r\n",FOCStruct_X.ZT_KP); break; } } else { switch (g_usart_rx_buf[2]) { case 'p': FOCStruct_X.V_KP = atof((const char *) (g_usart_rx_buf + 3)); printf("xvp:%f\r\n",FOCStruct_X.ZT_KP); break; case 'i': FOCStruct_X.V_KI = atof((const char *) (g_usart_rx_buf + 3)); printf("xvi:%f\r\n",FOCStruct_X.ZT_KP); break; case 'd': FOCStruct_X.V_KD = atof((const char *) (g_usart_rx_buf + 3)); printf("xvd:%f\r\n",FOCStruct_X.ZT_KP); break; } } }