适配新班子

This commit is contained in:
2024-06-28 18:23:53 +08:00
parent fad2a71e3a
commit ac05ce6f32
5 changed files with 41 additions and 37 deletions

View File

@@ -6,17 +6,17 @@
#define FAN_LL_PWM_PIN TIM8_PWM_MAP1_CH1_B6 // 左升力风扇 #define FAN_LL_PWM_PIN TIM8_PWM_MAP1_CH1_B6 // 左升力风扇
#define FAN_RL_PWM_PIN TIM8_PWM_MAP1_CH2_B7 // 右升力风扇 #define FAN_RL_PWM_PIN TIM8_PWM_MAP1_CH2_B7 // 右升力风扇
// M4 // M4
#define FAN_LB_PWM_A_PIN TIM10_PWM_MAP3_CH2_D3 // 左后 #define FAN_RB_PWM_A_PIN TIM10_PWM_MAP3_CH2_D3 // 左后
#define FAN_LB_PWM_B_PIN TIM10_PWM_MAP3_CH4_D7 // 左后 #define FAN_RB_PWM_B_PIN TIM10_PWM_MAP3_CH4_D7 // 左后
// M1 // M1
#define FAN_RB_PWM_A_PIN TIM4_PWM_MAP1_CH1_D12 // 右后 #define FAN_LB_PWM_A_PIN TIM4_PWM_MAP1_CH1_D12 // 右后
#define FAN_RB_PWM_B_PIN TIM4_PWM_MAP1_CH3_D14 // 右后 #define FAN_LB_PWM_B_PIN TIM4_PWM_MAP1_CH3_D14 // 右后
// M3 // M3
#define FAN_LS_PWM_B_PIN TIM10_PWM_MAP3_CH3_D5 // 左侧 #define FAN_RS_PWM_B_PIN TIM10_PWM_MAP3_CH3_D5 // 左侧
#define FAN_LS_PWM_A_PIN TIM10_PWM_MAP3_CH1_D1 // 左侧 #define FAN_RS_PWM_A_PIN TIM10_PWM_MAP3_CH1_D1 // 左侧
// M2 // M2
#define FAN_RS_PWM_B_PIN TIM4_PWM_MAP1_CH4_D15 // 右侧 #define FAN_LS_PWM_B_PIN TIM4_PWM_MAP1_CH4_D15 // 右侧
#define FAN_RS_PWM_A_PIN TIM4_PWM_MAP1_CH2_D13 // 右侧 #define FAN_LS_PWM_A_PIN TIM4_PWM_MAP1_CH2_D13 // 右侧
int32_t pwm_duty_ls_g; int32_t pwm_duty_ls_g;
int32_t pwm_duty_rs_g; int32_t pwm_duty_rs_g;
@@ -45,6 +45,8 @@ inline static float clip_f32(float x, float low, float up)
void by_pwm_init(void) void by_pwm_init(void)
{ {
gpio_init(D4, GPO, 1, GPO_PUSH_PULL);
gpio_init(C8, GPO, 1, GPO_PUSH_PULL);
pwm_init(FAN_LL_PWM_PIN, 50, 500); pwm_init(FAN_LL_PWM_PIN, 50, 500);
pwm_init(FAN_RL_PWM_PIN, 50, 500); pwm_init(FAN_RL_PWM_PIN, 50, 500);
@@ -59,13 +61,13 @@ void by_pwm_init(void)
pwm_init(FAN_RB_PWM_B_PIN, 20000, 7000); pwm_init(FAN_RB_PWM_B_PIN, 20000, 7000);
while (1); while (1);
#elif FIX_DRIVE == 2 #elif FIX_DRIVE == 2
pwm_init(FAN_LS_PWM_A_PIN, 20000, 7000); pwm_init(FAN_LS_PWM_A_PIN, 20000, 0);
pwm_init(FAN_LS_PWM_B_PIN, 20000, 0); pwm_init(FAN_LS_PWM_B_PIN, 20000, 0);
pwm_init(FAN_RS_PWM_A_PIN, 20000, 7000); pwm_init(FAN_RS_PWM_A_PIN, 20000, 0);
pwm_init(FAN_RS_PWM_B_PIN, 20000, 0); pwm_init(FAN_RS_PWM_B_PIN, 20000, 0);
pwm_init(FAN_LB_PWM_A_PIN, 20000, 7000); pwm_init(FAN_LB_PWM_A_PIN, 20000, 0);
pwm_init(FAN_LB_PWM_B_PIN, 20000, 0); pwm_init(FAN_LB_PWM_B_PIN, 20000, 0);
pwm_init(FAN_RB_PWM_A_PIN, 20000, 7000); pwm_init(FAN_RB_PWM_A_PIN, 20000, 1000);
pwm_init(FAN_RB_PWM_B_PIN, 20000, 0); pwm_init(FAN_RB_PWM_B_PIN, 20000, 0);
while (1); while (1);
#endif #endif

View File

@@ -130,14 +130,15 @@ void UART7_IRQHandler(void)
{ {
if (USART_GetITStatus(UART7, USART_IT_RXNE) != RESET) { if (USART_GetITStatus(UART7, USART_IT_RXNE) != RESET) {
wireless_module_uart_handler(); wireless_module_uart_handler();
uart_query_byte(UART_7, &bt_buffer);
bt_rx_flag = true;
USART_ClearITPendingBit(UART7, USART_IT_RXNE); USART_ClearITPendingBit(UART7, USART_IT_RXNE);
} }
} }
void UART8_IRQHandler(void) void UART8_IRQHandler(void)
{ {
if (USART_GetITStatus(UART8, USART_IT_RXNE) != RESET) { if (USART_GetITStatus(UART8, USART_IT_RXNE) != RESET) {
uart_query_byte(UART_8, &bt_buffer);
bt_rx_flag = true;
USART_ClearITPendingBit(UART8, USART_IT_RXNE); USART_ClearITPendingBit(UART8, USART_IT_RXNE);
} }
} }

View File

@@ -24,7 +24,7 @@ void jj_bt_init()
{ {
uart_init(BT_UART_INDEX, BT_UART_BAUDRATE, BT_UART_TX_PIN, BT_UART_RX_PIN); uart_init(BT_UART_INDEX, BT_UART_BAUDRATE, BT_UART_TX_PIN, BT_UART_RX_PIN);
// uart_tx_interrupt(UART_2, 1); // uart_tx_interrupt(UART_2, 1);
uart_rx_interrupt(UART_8, ENABLE); uart_rx_interrupt(BT_UART_INDEX, ENABLE);
} }
/** /**
*@brief 蓝牙中断回调函数 *@brief 蓝牙中断回调函数
@@ -70,8 +70,8 @@ void bt_printf(const char *format, ...)
va_end(args); va_end(args);
for (uint16_t i = 0; i < strlen(sbuf); i++) { for (uint16_t i = 0; i < strlen(sbuf); i++) {
while (USART_GetFlagStatus((USART_TypeDef *)uart_index[UART_8], USART_FLAG_TC) == RESET) while (USART_GetFlagStatus((USART_TypeDef *)uart_index[UART_7], USART_FLAG_TC) == RESET)
; ;
USART_SendData((USART_TypeDef *)uart_index[UART_8], sbuf[i]); USART_SendData((USART_TypeDef *)uart_index[UART_7], sbuf[i]);
} }
} }

View File

@@ -4,10 +4,10 @@
#include "stdio.h" #include "stdio.h"
#include "zf_driver_uart.h" #include "zf_driver_uart.h"
#define BT_UART_INDEX UART_8 #define BT_UART_INDEX UART_7
#define BT_UART_BAUDRATE 115200 #define BT_UART_BAUDRATE 115200
#define BT_UART_TX_PIN UART8_MAP0_TX_C4 #define BT_UART_TX_PIN UART7_MAP1_TX_A6
#define BT_UART_RX_PIN UART8_MAP0_RX_C5 #define BT_UART_RX_PIN UART7_MAP1_RX_A7
extern bool bt_rx_flag; extern bool bt_rx_flag;
extern uint8_t bt_buffer; // 接收字符存入 extern uint8_t bt_buffer; // 接收字符存入

View File

@@ -18,19 +18,19 @@ float ci_Ki0 = 0;
float ci_Kd0 = 0; float ci_Kd0 = 0;
float out_ci; float out_ci;
// 弯道后面风扇角度环 // 弯道后面风扇角度环
float an_Kp0 = 40.0f; float an_Kp0 = 45.0f;
float an_Ki0 = 0.0f; float an_Ki0 = 0.0f;
float an_Kd0 = 0.0f; float an_Kd0 = 0.0f;
// 直道后面风扇角度环 // 直道后面风扇角度环
float an_Kp1 = 42.0f; float an_Kp1 = 35.0f;
float an_Ki1 = 0.0f; float an_Ki1 = 0.0f;
float an_Kd1 = 0.0f; float an_Kd1 = 0.0f;
// 圆环后面风扇角度环 // 圆环后面风扇角度环
float yu_Kp0 = 60.0f; float yu_Kp0 = 51.0f;
float yu_Ki0 = 0.0f; float yu_Ki0 = 0.0f;
float yu_Kd0 = 0.0f; float yu_Kd0 = 0.0f;
// 弯道侧面风扇角度环 // 弯道侧面风扇角度环
float cn_Kp1 = 300.0f; float cn_Kp1 = 400.0f;
float cn_Ki1 = 0.f; float cn_Ki1 = 0.f;
float cn_Kd1 = 0.0f; float cn_Kd1 = 0.0f;
// 直道侧面风扇角度环 // 直道侧面风扇角度环
@@ -46,15 +46,15 @@ float out_pos;
float set_pos = 0.0f; float set_pos = 0.0f;
float out_cal; float out_cal;
// 弯道角速度环 // 弯道角速度环
float gy_Kp0 = 4.50f; float gy_Kp0 = 4.80f;
float gy_Ki0 = 0.0f; float gy_Ki0 = 0.0f;
float gy_Kd0 = 0.0f; float gy_Kd0 = 0.0f;
// 直道角速度环 // 直道角速度环
float gy_Kp1 = 3.2f; float gy_Kp1 = 6.0f;
float gy_Ki1 = 0.0f; float gy_Ki1 = 0.0f;
float gy_Kd1 = 0.0f; float gy_Kd1 = 0.0f;
// 圆环角速度环 // 圆环角速度环
float ygy_Kp0 = 4.0f; float ygy_Kp0 = 6.0f;
float ygy_Ki0 = 0.0f; float ygy_Ki0 = 0.0f;
float ygy_Kd0 = 0.0f; float ygy_Kd0 = 0.0f;
// 当前和输入量 // 当前和输入量
@@ -70,9 +70,9 @@ float in_speed;
float out_speed; float out_speed;
float set_speed; float set_speed;
float set_speed0 = 800.0f; float set_speed0 = 900.0f;
float set_speed1 = 1100.0f; float set_speed1 = 1100.0f;
float set_speed2 = 810.f; float set_speed2 = 830.f;
float set_speed3 = 1000.f; float set_speed3 = 1000.f;
int cnt1 = 0; int cnt1 = 0;
int cnt2 = 0; int cnt2 = 0;
@@ -89,7 +89,7 @@ int32_t pwm_duty_rs;
int32_t pwm_duty_lb; int32_t pwm_duty_lb;
int32_t pwm_duty_rb; int32_t pwm_duty_rb;
float qd_down = 0.0f; float qd_down = 0.0f;
float last_gy=0.0f;
/* /*
0:无状态 0:无状态
1:弯道 1:弯道
@@ -126,12 +126,13 @@ void sport_motion()
imu660ra_get_acc(); imu660ra_get_acc();
get_vol(); get_vol();
in_gyro = imu660ra_gyro_z; in_gyro = imu660ra_gyro_z;
// last_gy=in_gyro;
// 抖动停车 // 抖动停车
if (imu660ra_acc_z <= 600) { // if (imu660ra_acc_z <= 300) {
bt_fly_flag = bt_run_flag = 0; // bt_fly_flag = bt_run_flag = 0;
bt_printf("ting"); // bt_printf("ting");
} // }
// 斑马线停车 // 斑马线停车
if (1 == in_stop) { if (1 == in_stop) {
stop_flag = 1; stop_flag = 1;
@@ -266,7 +267,7 @@ void sport_pid_init()
PID(&far_angle_pid, &in_angle, &out_angle, &set_angle, an_Kp1, an_Ki1, an_Kd1, _PID_P_ON_E, _PID_CD_REVERSE); PID(&far_angle_pid, &in_angle, &out_angle, &set_angle, an_Kp1, an_Ki1, an_Kd1, _PID_P_ON_E, _PID_CD_REVERSE);
PID_SetMode(&far_angle_pid, _PID_MODE_AUTOMATIC); PID_SetMode(&far_angle_pid, _PID_MODE_AUTOMATIC);
PID_SetSampleTime(&far_angle_pid, 20); PID_SetSampleTime(&far_angle_pid, 20);
PID_SetOutputLimits(&far_angle_pid, -4000.0f, 4000.0f); PID_SetOutputLimits(&far_angle_pid, -4000.0f, 7000.0f);
// 直道侧面位置环 // 直道侧面位置环
PID(&str_angle_pid, &in_angle, &out_pos, &set_pos, po_Kp1, po_Ki1, po_Kd1, _PID_P_ON_E, _PID_CD_REVERSE); PID(&str_angle_pid, &in_angle, &out_pos, &set_pos, po_Kp1, po_Ki1, po_Kd1, _PID_P_ON_E, _PID_CD_REVERSE);
PID_SetMode(&str_angle_pid, _PID_MODE_AUTOMATIC); PID_SetMode(&str_angle_pid, _PID_MODE_AUTOMATIC);
@@ -286,11 +287,11 @@ void sport_pid_init()
PID(&far_gyro_pid, &in_gyro, &out_gyro, &out_angle, gy_Kp1, gy_Ki1, gy_Kd1, _PID_P_ON_E, _PID_CD_REVERSE); // m是增量 PID(&far_gyro_pid, &in_gyro, &out_gyro, &out_angle, gy_Kp1, gy_Ki1, gy_Kd1, _PID_P_ON_E, _PID_CD_REVERSE); // m是增量
PID_SetMode(&far_gyro_pid, _PID_MODE_AUTOMATIC); PID_SetMode(&far_gyro_pid, _PID_MODE_AUTOMATIC);
PID_SetSampleTime(&far_gyro_pid, 20); PID_SetSampleTime(&far_gyro_pid, 20);
PID_SetOutputLimits(&far_gyro_pid, -6000.0f, 6000.0f); PID_SetOutputLimits(&far_gyro_pid, -7000.0f, 7000.0f);
/* 速度控制 */ /* 速度控制 */
PID(&speed_pid, &in_speed, &out_speed, &set_speed, sp_Kp, sp_Ki, sp_Kd, _PID_P_ON_M, _PID_CD_DIRECT); PID(&speed_pid, &in_speed, &out_speed, &set_speed, sp_Kp, sp_Ki, sp_Kd, _PID_P_ON_M, _PID_CD_DIRECT);
PID_SetMode(&speed_pid, _PID_MODE_AUTOMATIC); PID_SetMode(&speed_pid, _PID_MODE_AUTOMATIC);
PID_SetSampleTime(&speed_pid, 20); PID_SetSampleTime(&speed_pid, 20);
PID_SetOutputLimits(&speed_pid, -0.0f, 6000.0f); PID_SetOutputLimits(&speed_pid, -0.0f, 7000.0f);
} }