강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김진섭님의 프로필 이미지
김진섭

작성한 질문수

바닥부터 시작하는 STM32 드론 개발의 모든 것

8-4. FC 데이터 송신 - ID 0x10 AHRS 메시지, 타이머 사용 (2/2)

TIM7이 클럭을 카운팅하고 있을때는 다른 동작들이 수행할수 있나요?

작성

·

234

0

안녕하세요?

강의를 듣다가 근본적?인 질문을 드립니다...

STM32에서 타이머가 동작할때, 즉 클럭을 카운팅 하는것은

하드웨어적으로 발생하는 것일텐데 그렇게 클럭을 카운팅하는 동

안에는 동시에 다른 동작(I/O 입출력,  UART 송수신 등)이 가능한

가요!?

조언 부탁드립니다!^^ 

답변 1

0

ChrisP님의 프로필 이미지
ChrisP
지식공유자

안녕하세요!

Q. STM32에서 타이머가 동작할때, 즉 클럭을 카운팅 하는것은 하드웨어적으로 발생하는 것일텐데 그렇게 클럭을 카운팅하는 동안에는 동시에 다른 동작(I/O 입출력,  UART 송수신 등)이 가능한가요!?

A. 좋은 질문이네요! 네 가능합니다.

하드웨어적으로 동작한다는 것은, 내부 페리페럴을 동작시키는 것을 의미하고, 이런 페리페럴들은 초기화 하고 Enable 해준 후부터는 혼자 스스로 동작합니다.

그동안 다른 페리페럴이나 사용자 코드는 그와 별개로 동작하죠!

이걸 잘 고려해서 펌웨어 소스코드를 작성해야 하는데요, 하드웨어적으로 동작하지만 소프트웨어적으로도 별도 처리를 해줘야 하는 경우도 있습니다.

예를 들어, UART 수신의 경우, 인터럽트와 DMA를 사용하지 않는다면,

수신이 되면 UART data register에 데이터가 저장되지만 이걸 사용자 버퍼 변수에 저장하는 것은 소프트웨어적으로 처리해야 합니다.

그러기 위해서는 데이터 수신이 완료됐는지를 검사해야 하는데 이것 역시 소프트웨어적으로 처리해줘야 하고요.

워낙 다양한 경우가 많아서 각 페리페럴들이 어떻게 동작하는지 개념을 정확히 이해하는 것이 좋습니다만, 그러려면 많은 시행착오와 경험이 필요합니다 ㅎㅎ

김진섭님의 프로필 이미지
김진섭

작성한 질문수

질문하기