• 카테고리

    질문 & 답변
  • 세부 분야

    임베디드 · IoT

  • 해결 여부

    미해결

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

22.05.14 13:48 작성 조회수 141

0

안녕하세요?

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

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

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

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

가요!?

조언 부탁드립니다!^^ 

답변 1

답변을 작성해보세요.

0

안녕하세요!

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

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

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

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

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

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

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

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

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