Help 문을 Info를 출력해 봤습니다.
CAN통신 채널 1, 2 통신 설정 상태를 출력할 수 있도록 수정 했습니다.
라이브러리 반영하여 업 그레이드 했습니다
int main()
{
while (1)
{
can_tx(&hcan1, 0x567, 8, &TxData);
can_info_tx(&hcan1, "LOOPBACK");
HAL_Delay(100);
if(can1_rx_end_flag == 1)
{
// printf("CAN1 RX ID: 0x%03lX, DLC: %lu, Data: ", RxHeader.StdId, (uint32_t)RxHeader.DLC);
// printf("CAN1 RX = %s\r\n", RxData);
can_info_rx(&hcan1, "LOOPBACK");
memset(RxData, 0, sizeof(RxData));
can1_rx_end_flag = 0;
}
if(can2_rx_end_flag == 2)
{
// printf("CAN2 RX ID: 0x%03lX, DLC: %lu, Data: ", RxHeader.StdId, (uint32_t)RxHeader.DLC);
// printf("CAN2 RX = %s\r\n", RxData);
can_info_rx(&hcan2, "LOOPBACK");
memset(RxData, 0, sizeof(RxData));
can2_rx_end_flag = 0;
}
HAL_Delay(1000);
}
//===================================================
// CAN RX Info Help
void can_info_rx(CAN_HandleTypeDef *hcan, char *mode)
{
char *buf;
buf = (hcan->Instance == CAN1) ? "CAN1" : "CAN2";
printf("%s RX Prescaler = %d, Mode = %s\r\n", buf, hcan->Init.Prescaler, mode);
printf("Dev_MSG_ID = 0x%03lX, RTR : %lu-User Data Frame\r\n", RxHeader.StdId, RxHeader.RTR);
printf("RX Byte(DLC) : %lu Rx Data = %s\r\n\n", (uint32_t)RxHeader.DLC, RxData);
//사용예제 : can_info_rx(&hcan1, "LOOPBACK");
}
// CAN TX Info Help
void can_info_tx(CAN_HandleTypeDef *hcan, char *mode)
{
char *buf;
buf = (hcan->Instance == CAN1) ? "CAN1" : "CAN2";
printf("%s TX Prescaler = %d, Mode = %s\r\n", buf, hcan->Init.Prescaler, mode);
printf("Dev_MSG_ID = 0x%03lX, RTR : %lu-User Data Frame\r\n", TxHeader.StdId, TxHeader.RTR);
printf("TX Byte(DLC) : %lu Tx Data = %s\r\n\n", (uint32_t)TxHeader.DLC, TxData);
//사용예제 : can_info_tx(&hcan1, "LOOPBACK");
}