STM8 EVM MCU성능테스트 - CLK 설정
STM8은 최대 24Mhz로 동작하는 8bit MCU이다. STM8SF의영우 16Mhz가 최대 동작 주파수 이다.
속도는 그리 빠르지 않아도 가격대비 성능이 우수한데 간단히 성능 테스트를 해 보았다.
STM8 클럭 블록도
우선 STM8의 클럭 시스템을 보면 외부 오실레이터나 크리스탈을 연결하거나 내부 16Mhz RC 오실레이터를 이용할 수 있다. 사이즈가 워낙 작아서 내부 클럭 사용을 많이 하게되므로 내부 클럭 기준으로 테스트 할 예정이다.
동작 클럭은 외부로 출력 할 수 있는데 PC4-CLK CCO핀으로 출력해서 확인 할 수 있다.
PC4(HS)/TIM1_CH4/CLK_CCO/AIN2/[TIM1_CH2N]
STM8 클럭 설정
void SystemInit(void)
{
CLK_DeInit();
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); // CPU Prescaler = 1.
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); // Prescaler = 8, 16 MHz.
//CLK_CCOConfig(CLK_OUTPUT_HSI); // Output clock on CCO pin.
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, // Automatically switch
CLK_SOURCE_HSI, // Switch to internal timer.
DISABLE, // Disable the clock switch interrupt.
CLK_CURRENTCLOCKSTATE_DISABLE); // Disable the previous clock.
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); /*16 MHz Setting*/
}
16Mhz로 동시 GPIO토글 속도는 3.2Mhz 정도로 측정된다. 16Mhz대 다른 MCU의 성능과 비교해 보면 나쁘지 않은것 같다. 특히 가격적인 면을 고려 한다면 상당히 만족스럽다.
32 while(1)
33 {
36 PORTD = 0;
\ ??main_0:
\ 000019 35 00 500F MOV L:0x500f, #0x0
37 PORTD = BIT3;
\ 00001D 35 08 500F MOV L:0x500f, #0x8
\ 000021 20 F6 JRA L:??main_0
38 }