본문 바로가기
카테고리 없음

[펌웨어] 시스템 클럭이란? 기본적인 연산 수행 횟수를 말한다.

by newbeverse 2025. 1. 8.

시스템 클럭인란 1초에 mcu가 몇 hz로 발진하는지를 이야기한다.

  • 만약 SystemCoreClock이 48MHz라면, MCU는 1초에 48,000,000번의 클럭 사이클을 실행한다.
  • 즉, 기본적인 연산을 1초에 4800만번 시행한다는 이야기다.

난 1초에 10억 Hz 를 발진하지롱~!👍 OS를 올리려면 이정도 사양쯤은 나와야하나봐요~

시스템 클럭으로 타이머 만들기 예시
// MCU가 48MHz로 동작할 경우
// 1밀리초(ms)를 만들기 위해 필요한 클럭 사이클
uint32_t cycles_for_1ms = SystemCoreClock / 1000;  // 48000
  • mcu가 1초에 48mhz로 발진 하므로, 1milli 초를 만들기 위해서 0.001을 곱해준다. 
  • 48,000,000 * 0.001 = 48,000 mhz
  • 따라서 48,000 mhz 마다 1milli 초가 됨을 알 수 있다.
이를 활용해서 for문이 48,000번 작동하므로써 1밀리초를 만든다.
void simple_delay_ms(uint32_t ms)
{
	uint32_t cycles = (SystemCoreClock / 1000) * ms;
    for(uint32_t i = 0; i <cycles; i++)
    {
    	__NOP(); // 동작없음.
    }
}
단, 이렇게 하면 1초를 만드는 동안 다른 작업을 할 수 없게된다. 
딜레이 함수를 만들때는 보통 인터럽트을 쓴다는 사실을 명심하자.

 

반응형