# Tank400_F042 **Repository Path**: gxswift/Tank400_F042 ## Basic Information - **Project Name**: Tank400_F042 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-08-08 - **Last Updated**: 2024-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # STM32F042 ## 破解倒挡 波特率:500K CANID: 标准帧 数据帧 0x2E7 |data 2 3|事件| |---|---| 30 04 |R松刹车 30 06 |R踩刹车 30 00 |D松刹车 30 02 |D刹车 30 00 |N松刹车 30 02 |N刹车 00 00 |P松刹车 00 02 |P刹车 ```c static uint8_t control = 0; void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *handcan) { uint8_t Data[8] = {0}; HAL_StatusTypeDef HAL_RetVal; CAN_RxHeaderTypeDef RxMeg; if (handcan == &hcan) { HAL_RetVal = HAL_CAN_GetRxMessage(handcan, CAN_RX_FIFO0, &RxMeg, Data); if (HAL_OK == HAL_RetVal) { if (RxMeg.StdId == 0x2e7) { // if ((Data[3] & 0xFD) == 4) if (Data[3] & 1<<2) { control = 1; } else { control = 0; } } } } } void CAN_Config(void) { CAN_FilterTypeDef hCAN1_Filter; // CAN滤波器 hCAN1_Filter.FilterIdHigh = 0x02E7 << 5; hCAN1_Filter.FilterIdLow = 0; hCAN1_Filter.FilterMaskIdHigh = 0x02E8 << 5; hCAN1_Filter.FilterMaskIdLow = 0; hCAN1_Filter.FilterFIFOAssignment = CAN_FILTER_FIFO0; hCAN1_Filter.FilterBank = 1; hCAN1_Filter.FilterMode = CAN_FILTERMODE_IDLIST; hCAN1_Filter.FilterScale = CAN_FILTERSCALE_32BIT; hCAN1_Filter.FilterActivation = ENABLE; hCAN1_Filter.SlaveStartFilterBank = 14; HAL_CAN_ConfigFilter(&hcan, &hCAN1_Filter); HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING | CAN_IT_RX_FIFO0_FULL | CAN_IT_RX_FIFO0_OVERRUN); HAL_CAN_Start(&hcan); } HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,control); ``` ## 控制 |信号|PA0|PA1|PA2|PA7 |---|---|---|---|---| |有倒车无刹车|高 |PWM 0ms/20ms|500ms高低交替|低(灯亮)| |无倒车有刹车|低 |PWM 20ms/20ms|500ms高低交替|低(灯亮)| |有倒车有刹车|高 |PWM 20ms/20ms|500ms高低交替|低(灯亮)| |无倒车无刹车|低 |PWM 0ms/20ms|500ms高低交替|高(灯灭)| ## 测试 宏定义TEST定义是否测试程序