将ICM42688改为硬件SPI通讯。
This commit is contained in:
113
APP/Usart1.c
Normal file
113
APP/Usart1.c
Normal file
@ -0,0 +1,113 @@
|
||||
//
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user