diff --git a/app/by_fan_control.c b/app/by_fan_control.c index 3ffe818..c89c797 100644 --- a/app/by_fan_control.c +++ b/app/by_fan_control.c @@ -6,17 +6,17 @@ #define FAN_LL_PWM_PIN TIM8_PWM_MAP1_CH1_B6 // 左升力风扇 #define FAN_RL_PWM_PIN TIM8_PWM_MAP1_CH2_B7 // 右升力风扇 // M4 -#define FAN_LB_PWM_A_PIN TIM10_PWM_MAP3_CH2_D3 // 左后 -#define FAN_LB_PWM_B_PIN TIM10_PWM_MAP3_CH4_D7 // 左后 +#define FAN_RB_PWM_A_PIN TIM10_PWM_MAP3_CH2_D3 // 左后 +#define FAN_RB_PWM_B_PIN TIM10_PWM_MAP3_CH4_D7 // 左后 // M1 -#define FAN_RB_PWM_A_PIN TIM4_PWM_MAP1_CH1_D12 // 右后 -#define FAN_RB_PWM_B_PIN TIM4_PWM_MAP1_CH3_D14 // 右后 +#define FAN_LB_PWM_A_PIN TIM4_PWM_MAP1_CH1_D12 // 右后 +#define FAN_LB_PWM_B_PIN TIM4_PWM_MAP1_CH3_D14 // 右后 // M3 -#define FAN_LS_PWM_B_PIN TIM10_PWM_MAP3_CH3_D5 // 左侧 -#define FAN_LS_PWM_A_PIN TIM10_PWM_MAP3_CH1_D1 // 左侧 +#define FAN_RS_PWM_B_PIN TIM10_PWM_MAP3_CH3_D5 // 左侧 +#define FAN_RS_PWM_A_PIN TIM10_PWM_MAP3_CH1_D1 // 左侧 // M2 -#define FAN_RS_PWM_B_PIN TIM4_PWM_MAP1_CH4_D15 // 右侧 -#define FAN_RS_PWM_A_PIN TIM4_PWM_MAP1_CH2_D13 // 右侧 +#define FAN_LS_PWM_B_PIN TIM4_PWM_MAP1_CH4_D15 // 右侧 +#define FAN_LS_PWM_A_PIN TIM4_PWM_MAP1_CH2_D13 // 右侧 int32_t pwm_duty_ls_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) { + 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_RL_PWM_PIN, 50, 500); @@ -59,13 +61,13 @@ void by_pwm_init(void) pwm_init(FAN_RB_PWM_B_PIN, 20000, 7000); while (1); #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_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_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_RB_PWM_A_PIN, 20000, 7000); + pwm_init(FAN_RB_PWM_A_PIN, 20000, 1000); pwm_init(FAN_RB_PWM_B_PIN, 20000, 0); while (1); #endif diff --git a/app/isr.c b/app/isr.c index 58315ec..17129ed 100644 --- a/app/isr.c +++ b/app/isr.c @@ -130,14 +130,15 @@ void UART7_IRQHandler(void) { if (USART_GetITStatus(UART7, USART_IT_RXNE) != RESET) { wireless_module_uart_handler(); + uart_query_byte(UART_7, &bt_buffer); + bt_rx_flag = true; USART_ClearITPendingBit(UART7, USART_IT_RXNE); } } void UART8_IRQHandler(void) { 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); } } diff --git a/app/jj_blueteeth.c b/app/jj_blueteeth.c index 54aa0df..778201c 100644 --- a/app/jj_blueteeth.c +++ b/app/jj_blueteeth.c @@ -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_tx_interrupt(UART_2, 1); - uart_rx_interrupt(UART_8, ENABLE); + uart_rx_interrupt(BT_UART_INDEX, ENABLE); } /** *@brief 蓝牙中断回调函数 @@ -70,8 +70,8 @@ void bt_printf(const char *format, ...) va_end(args); 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]); } } \ No newline at end of file diff --git a/app/jj_blueteeth.h b/app/jj_blueteeth.h index 8715203..95b4816 100644 --- a/app/jj_blueteeth.h +++ b/app/jj_blueteeth.h @@ -4,10 +4,10 @@ #include "stdio.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_TX_PIN UART8_MAP0_TX_C4 -#define BT_UART_RX_PIN UART8_MAP0_RX_C5 +#define BT_UART_TX_PIN UART7_MAP1_TX_A6 +#define BT_UART_RX_PIN UART7_MAP1_RX_A7 extern bool bt_rx_flag; extern uint8_t bt_buffer; // 接收字符存入 diff --git a/app/jj_motion.c b/app/jj_motion.c index ed31480..05782af 100644 --- a/app/jj_motion.c +++ b/app/jj_motion.c @@ -18,19 +18,19 @@ float ci_Ki0 = 0; float ci_Kd0 = 0; float out_ci; // 弯道后面风扇角度环 -float an_Kp0 = 40.0f; +float an_Kp0 = 45.0f; float an_Ki0 = 0.0f; float an_Kd0 = 0.0f; // 直道后面风扇角度环 -float an_Kp1 = 42.0f; +float an_Kp1 = 35.0f; float an_Ki1 = 0.0f; float an_Kd1 = 0.0f; // 圆环后面风扇角度环 -float yu_Kp0 = 60.0f; +float yu_Kp0 = 51.0f; float yu_Ki0 = 0.0f; float yu_Kd0 = 0.0f; // 弯道侧面风扇角度环 -float cn_Kp1 = 300.0f; +float cn_Kp1 = 400.0f; float cn_Ki1 = 0.f; float cn_Kd1 = 0.0f; // 直道侧面风扇角度环 @@ -46,15 +46,15 @@ float out_pos; float set_pos = 0.0f; float out_cal; // 弯道角速度环 -float gy_Kp0 = 4.50f; +float gy_Kp0 = 4.80f; float gy_Ki0 = 0.0f; float gy_Kd0 = 0.0f; // 直道角速度环 -float gy_Kp1 = 3.2f; +float gy_Kp1 = 6.0f; float gy_Ki1 = 0.0f; float gy_Kd1 = 0.0f; // 圆环角速度环 -float ygy_Kp0 = 4.0f; +float ygy_Kp0 = 6.0f; float ygy_Ki0 = 0.0f; float ygy_Kd0 = 0.0f; // 当前和输入量 @@ -70,9 +70,9 @@ float in_speed; float out_speed; float set_speed; -float set_speed0 = 800.0f; +float set_speed0 = 900.0f; float set_speed1 = 1100.0f; -float set_speed2 = 810.f; +float set_speed2 = 830.f; float set_speed3 = 1000.f; int cnt1 = 0; int cnt2 = 0; @@ -89,7 +89,7 @@ int32_t pwm_duty_rs; int32_t pwm_duty_lb; int32_t pwm_duty_rb; float qd_down = 0.0f; - +float last_gy=0.0f; /* 0:无状态 1:弯道 @@ -126,12 +126,13 @@ void sport_motion() imu660ra_get_acc(); get_vol(); 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_printf("ting"); - } + // bt_fly_flag = bt_run_flag = 0; + // bt_printf("ting"); + // } // 斑马线停车 if (1 == in_stop) { 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_SetMode(&far_angle_pid, _PID_MODE_AUTOMATIC); 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_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_SetMode(&far_gyro_pid, _PID_MODE_AUTOMATIC); 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_SetMode(&speed_pid, _PID_MODE_AUTOMATIC); PID_SetSampleTime(&speed_pid, 20); - PID_SetOutputLimits(&speed_pid, -0.0f, 6000.0f); + PID_SetOutputLimits(&speed_pid, -0.0f, 7000.0f); }