티스토리 뷰

Embedded OOP

System Clock 설정

Just4Fun 2020. 4. 15. 16:27

본격적인 프로젝트를 시작하려면 시스템 클럭을 설정해 주어야 한다.

시스템 클럭 설정을 위해서 별도의 객체는 생성하지 않고 static 함수를 제공하는 방법을 선택하였다.

#define REF_CLK     8000000

static void setup()
{
    Flash::Flash_init(5);
    Rcc::Rcc_init(REF_CLK, 4, 180, Rcc::PLLP_2);
    Rcc::Set_bus_clock(Rcc::HPRE_1, Rcc::PPRE_4, Rcc::PPRE_2);

    led = new Gpio_out{Gpio::PORTG, LED_GRN|LED_RED};
    led->Set_pin(LED_GRN);
}

위의 설정대로 하면 180MHz로 동작하게 된다.  이렇게 빠른 속도로 동작시키기 위해서는 Flash 메모리 접근시에 적당한 latency를 주어야 하기 때문에 클럭 설정 이전에 Flash 메모리의 latency 설정하는 코드를 추가하였다.  이때 Icache, Dcache도 같이 enable 해주어서 동작 성능을 높여 주었다.

static void loop()
{
    led->Toggle(LED_GRN|LED_RED);
    delay(500);
}

시스템 클럭을 설정한 후 보드에서 실행 시키면 두개의 LED가 모두 켜져 있는것처럼 보인다.  동작 속도가 16MHz에서 180MHz가 되었으므로 약 11배 정도 빠르게 동작 되기 때문이다.  따라서 delay값을 5000으로 10배 높여주면 LED가 번갈아 깜빡이는 것을 볼 수 있게 된다.

 

embed-oop.zip
0.03MB

'Embedded OOP' 카테고리의 다른 글

I2C  (0) 2020.05.01
UART  (0) 2020.04.18
GPIO In  (0) 2020.04.15
GPIO Out  (0) 2020.04.15
객체지향 임베디드  (2) 2020.04.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함