加入Bsp_can

This commit is contained in:
2026-04-28 21:12:41 +08:00
parent 16883c5704
commit a6864bbe28
12 changed files with 348 additions and 368 deletions

View File

@@ -1,10 +0,0 @@
#ifndef CAN_TASK_H
#define CAN_TASK_H
#endif

View File

@@ -1,141 +0,0 @@
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : Config.c
* @brief : Configuare the Robot Functions
* @author : Yan Yuanbin
* @date : 2023/05/21
* @version : v1.0
******************************************************************************
* @attention : To be perfected
******************************************************************************
*/
/* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef ROBOT_CONFIG_H
#define ROBOT_CONFIG_H
/* Includes ------------------------------------------------------------------*/
#include "stdint.h"
#include "stdbool.h"
#include "stdlib.h"
#include "string.h"
#include "math.h"
/* General physics and mathematics constants ---------------------------------*/
/**
* @brief the value of local gravity acceleration
*/
#define VAL_LIMIT(x,min,max) do{ \
if ((x) > (max)) {(x) = (max);} \
else if ((x) < (min)) {(x) = (min);} \
}while(0U)
#define GravityAccel 9.718f
#define Angle_to_rad 0.01745329f
#define Rad_to_angle 57.2957732f
/**
* @brief Euler's Number
*/
#define Euler_Number 2.718281828459045f
/**
* @brief radian system rotation degrees system , 180.f/PI
*/
#define RadiansToDegrees 57.295779513f
/**
* @brief degrees system rotation radian system , PI/180.f
*/
#define DegreesToRadians 0.01745329251f
/* Vision reslove constants -------------------------------------------------*/
/**
* @brief Decision Marking mode
* 0: select the minimum yaw armor
* 1: select the minimum distance armor
*/
#define Yaw_Distance_Decision 0
/**
* @brief ballistic coefficient
* @note 17mm: 0.038
* 42mm: 0.019
*/
#define Bullet_Coefficient 0.038f
/**
* @brief the half width of little armor
*/
#define LittleArmor_HalfWidth 0.07f
/**
* @brief the half width of Large armor
*/
#define LargeArmor_HalfWidth 0.1175f
/* IMU reslove constants ---------------------------------------------------*/
/**
* @brief the flag of bmi088 Calibration
* 0: DISABLE
* 1: ENABLE
*/
#define IMU_Calibration_ENABLE 0U
/**
* @brief the index of pitch angle update
*/
#define IMU_ANGLE_INDEX_PITCH 2U
/**
* @brief the index of yaw angle update
*/
#define IMU_ANGLE_INDEX_YAW 0U
/**
* @brief the index of roll angle update
*/
#define IMU_ANGLE_INDEX_ROLL 1U
/**
* @brief the index of pitch gyro update
*/
#define IMU_GYRO_INDEX_PITCH 0U
/**
* @brief the index of yaw gyro update
*/
#define IMU_GYRO_INDEX_YAW 2U
/**
* @brief the index of roll gyro update
*/
#define IMU_GYRO_INDEX_ROLL 1U
/**
* @brief the index of pitch accel update
*/
#define IMU_ACCEL_INDEX_PITCH 0U
/**
* @brief the index of yaw accel update
*/
#define IMU_ACCEL_INDEX_YAW 2U
/**
* @brief the index of roll accel update
*/
#define IMU_ACCEL_INDEX_ROLL 1U
/* Remote reslove constants -----------------------------------------------*/
/**
* @brief the flag of remote control receive frame data
* @note 0: CAN
* 1: USART
*/
#define REMOTE_FRAME_USART_CAN 0U
#endif //ROBOT_CONFIG_H

View File

@@ -1,50 +0,0 @@
/**
******************************************************************************
* @file : Control_Task.c
* @brief : Control task
* @author : Yan Yuanbin
* @date : 2023/04/27
* @version : v1.0
******************************************************************************
* @attention : None
******************************************************************************
*/
/* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef CONTROL_TASK_H
#define CONTROL_TASK_H
/* Includes ------------------------------------------------------------------*/
#include "stdint.h"
#include "stdbool.h"
/**
* @brief typedef structure that contains the information of chassis control
*/
typedef struct
{
struct{
float Chassis_Velocity;
}Target;
struct{
float Chassis_Velocity;
}Measure;
int16_t SendValue[4];
}Control_Info_Typedef;
extern Control_Info_Typedef Control_Info;
#endif //CONTROL_TASK_H

View File

@@ -1,52 +0,0 @@
/**
******************************************************************************
* @file : CAN_Task.c
* @brief : CAN task
* @author : GrassFam Wang
* @date : 2025/1/22
* @version : v1.1
******************************************************************************
* @attention : None
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "cmsis_os.h"
#include "CAN_Task.h"
#include "Control_Task.h"
#include "INS_Task.h"
#include "Motor.h"
#include "bsp_can.h"
#include "Remote_Control.h"
#include "Control_Task.h"
/* USER CODE BEGIN Header_CAN_Task */
/**
* @brief Function implementing the StartCANTask thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_CAN_Task */
void CAN_Task(void const * argument)
{
TickType_t CAN_Task_SysTick = 0;
for(;;)
{
CAN_Task_SysTick = osKernelSysTick();
if(CAN_Task_SysTick % 2 == 0){
//500Hz<48><7A><EFBFBD><EFBFBD> <20>뱣֤<EBB1A3><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>osDelay(1)
}
osDelay(1);
}
}

View File

@@ -1,84 +0,0 @@
/**
******************************************************************************
* @file : Control_Task.c
* @brief : Control task
* @author : GrassFan Wang
* @date : 2025/01/22
* @version : v1.1
******************************************************************************
* @attention : None
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "Control_Task.h"
#include "cmsis_os.h"
#include "Control_Task.h"
#include "bsp_uart.h"
#include "Remote_Control.h"
#include "PID.h"
#include "Motor.h"
static void Control_Init(Control_Info_Typedef *Control_Info);
static void Control_Measure_Update(Control_Info_Typedef *Control_Info);
static void Control_Target_Update(Control_Info_Typedef *Control_Info);
static void Control_Info_Update(Control_Info_Typedef *Control_Info);
Control_Info_Typedef Control_Info;
// KP KI KD Alpha Deadband I_MAX Output_MAX
static float Chassis_PID_Param[7] = {13.f,0.1f,0.f,0.f, 0.f, 5000.f, 12000.f};
PID_Info_TypeDef Chassis_PID;
void Control_Task(void const * argument)
{
/* USER CODE BEGIN Control_Task */
TickType_t Control_Task_SysTick = 0;
Control_Init(&Control_Info);
/* Infinite loop */
for(;;)
{
Control_Task_SysTick = osKernelSysTick();
Control_Measure_Update(&Control_Info);
Control_Target_Update(&Control_Info);
Control_Info_Update(&Control_Info);
USART_Vofa_Justfloat_Transmit(Control_Info.Measure.Chassis_Velocity,0.f,0.f);
osDelay(1);
}
}
/* USER CODE END Control_Task */
static void Control_Init(Control_Info_Typedef *Control_Info){
PID_Init(&Chassis_PID,PID_POSITION,Chassis_PID_Param);
}
static void Control_Measure_Update(Control_Info_Typedef *Control_Info){
Control_Info->Measure.Chassis_Velocity = Chassis_Motor[0].Data.Velocity;
}
static void Control_Target_Update(Control_Info_Typedef *Control_Info){
Control_Info->Target.Chassis_Velocity = remote_ctrl.rc.ch[3] * 5.f;
}
static void Control_Info_Update(Control_Info_Typedef *Control_Info){
PID_Calculate(&Chassis_PID, Control_Info->Target.Chassis_Velocity, Control_Info->Measure.Chassis_Velocity);
Control_Info->SendValue[0] = (int16_t)(Chassis_PID.Output);
}