i-Bus 수신에 관하여

20.08.27 14:53 작성 조회수 29

0

삭제된 글입니다

답변 1

답변을 작성해보세요.

1

안녕하세요! 제가 설명드린 내용이랑 좀 다르게 구현하셨네요.

제 수업에서는 UART 사용 시, LL 드라이버를 사용합니다.

님처럼 HAL 드라이버를 사용하는 경우는, 한 바이트마다 처리하는것보다 모든 데이터 프레임을 다 받아와서 한번에 처리하는것이 유리합니다.

그 이유는, HAL 드라이버의 인터럽트 처리 방식이 LL보다 코드가 좀 복잡해서 인터럽트 함수 처리의 시간이 오래걸리기 때문입니다.

그 내용까지 다 다루기엔 설명이 너무 길어질거 같아서 생략하였고, LL드라이버로 진행한거에요~

모든 마이크로컨트롤러에서는

인터럽트 서비스 루틴 (STM의 경우 xxx_IRQHandler()) 안에서는 최소한의 시간이 소요되도록 코드를 작성하는것이 중요합니다.

따라서 인터럽트 서비스 루틴 안에서는 printf 함수와 delay 함수는 가급적 사용하지 않도록 코드를 작성하는것이 바람직 합니다.

또한 HAL 드라이버로 인터럽트를 사용하면 (자동으로 생성되는) 인터럽트 함수내에서 호출되는 코드 내부가 좀 복잡하기 때문에, 가급적 그 함수의 호출 횟수를 줄이는 방식으로 코드를 작성하셔야 됩니다.

이건 다 이해하려면 코드를 한줄씩 분석해야하기 때문에, 다른 이유가 있는것이 아니라면 제 수업처럼 LL로 진행하시기 바라겠습니다.

감사합니다.