CAFE

한국직업능력교육원

[스크랩] [ARM 실습 60] CAN1 LoopBack Interrupt Test-5

작성자송명규|작성시간26.06.23|조회수5 목록 댓글 0

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");

}

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼