更新项目结构,修改自述文件

This commit is contained in:
2026-05-17 21:16:52 +08:00
parent bc5bd0c72e
commit a4ccd91c75
28 changed files with 129 additions and 50 deletions

102
00-Driver/BSP_CAN.c Normal file
View File

@@ -0,0 +1,102 @@
#include "bsp_can.h"
#include "main.h"
#include "Motor.h"
//===============变量区
extern CAN_HandleTypeDef hcan1;
extern CAN_HandleTypeDef hcan2;
//===============公共函数
void Can_Filter_Init(void)
{
CAN_FilterTypeDef can_filter_st;
can_filter_st.FilterActivation = ENABLE;
can_filter_st.FilterMode = CAN_FILTERMODE_IDMASK;//CAN_FILTERMODE_IDLIST//CAN_FILTERMODE_IDMASK
can_filter_st.FilterScale = CAN_FILTERSCALE_16BIT;
can_filter_st.FilterIdHigh = 0x0000; //(0x207<<5)
can_filter_st.FilterIdLow = 0x0000;
can_filter_st.FilterMaskIdHigh = 0x0000;//(0x1FF<<5)
can_filter_st.FilterMaskIdLow = 0x0000;
can_filter_st.FilterBank = 0;
can_filter_st.FilterFIFOAssignment = CAN_RX_FIFO0;
HAL_CAN_ConfigFilter(&hcan1, &can_filter_st);
HAL_CAN_Start(&hcan1);
HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING);
can_filter_st.SlaveStartFilterBank = 14;
can_filter_st.FilterBank = 14;
HAL_CAN_ConfigFilter(&hcan2, &can_filter_st);
HAL_CAN_Start(&hcan2);
HAL_CAN_ActivateNotification(&hcan2, CAN_IT_RX_FIFO0_MSG_PENDING);
}
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
{
CAN_RxHeaderTypeDef rx_header;
uint8_t rx_data[8];
// 读取接收到的消息
if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &rx_header, rx_data) != HAL_OK)
return; // 安全检查
// 只处理标准帧
if (rx_header.IDE != CAN_ID_STD)
return;
// 根据 CAN 外设实例区分总线
if (hcan == &hcan1)
{
switch (rx_header.StdId)
{
case 0x201:
CAN1_M3508_DataProcess(0x201,rx_data);break;
case 0x202:
CAN1_M3508_DataProcess(0x202,rx_data);break;
case 0x203:
CAN1_M3508_DataProcess(0x203,rx_data);break;
case 0x204:
CAN1_M3508_DataProcess(0x204,rx_data);break;
case 0x205:
break;
case 0x206:
break;
case 0x207:
break;
case 0x208:
break;
default:
{
break;
}
}
}
else if (hcan == &hcan2)
{
switch (rx_header.StdId)
{
case 0x201:
break;
case 0x202:
break;
case 0x203:
break;
case 0x204:
break;
case 0x205:
CAN2_M6020_DataProcess(0x205,rx_data);break;
case 0x206:
CAN2_M6020_DataProcess(0x206,rx_data);break;
case 0x207:
break;
case 0x208:
break;
case 0x149:
CToC_CANDataProcess(0x149,rx_data);break;
default:
{
break;
}
}
}
}