114 lines
2.9 KiB
C
114 lines
2.9 KiB
C
//
|
|
// Created by hu123456 on 2024/2/20.
|
|
//
|
|
#include "Usart1.h"
|
|
#include "stdio.h"
|
|
#include <stdlib.h>
|
|
|
|
#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;
|
|
}
|
|
}
|
|
}
|
|
|
|
|