STM8L 해보기 6
약간의 소스 설명을 해보고자 한다.
1. Main 에서 먼저 해야 할 것은 GPIO를 선언하는 것이다.
GPIO 선언부를 확인해 보자
#define BUTTON_SW1_GPIO_PORT GPIOC #define BUTTON_SW1_GPIO_PIN GPIO_Pin_5 |
GPIO_Init( BUTTON_SW1_GPIO_PORT, BUTTON_SW1_GPIO_PIN, GPIO_Mode_In_PU_IT); |
GPIOC 에 PIN5번이 pullup으로 설정된 인터럽트 가능한 입력 포트로 설정된 것이다. |
또 다른 GPIO 선언부를 확인해 보면
#define LED_GREEN_PORT GPIOB #define LED_GREEN_PIN GPIO_Pin_1 |
GPIO_Init( LED_GREEN_PORT, LED_GREEN_PIN, GPIO_Mode_Out_PP_High_Fast); |
GPIOB 에 PIN1번이 pullup으로 설정된 출력 포트로 설정된 것이다.
실제 사용 예를 보면 // GPIO_LOW(a,b) a->ODR&=~b GPIO_LOW(LED_GREEN_PORT,LED_GREEN_PIN); |
2. Clock 를 선언한다.
내부 또는 외부 Clock 을 선언 할 수 있는데 처음 BOOT 하면 내부 Clock 사용으로 선택 되고 16M의 8분주로 2MHz로 동작 된다.
이후 만약 내부 클럭 최대 속도로 동작하려면
CLK_SYSCLKSourceSwitchCmd(ENABLE); CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI); CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); // system clock prescaler: 1 while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI) {} |
내부 클럭 HIS로 선언하고 prescaler을 1로 선언해서 최대 속도로 동작한다. 설정이 완료된 후 안정화 될 때까지 기다린다. |
만약 내부 클럭 최저 속도로 동작하려면
CLK_SYSCLKSourceSwitchCmd(ENABLE); CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI); CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_128); // system clock prescaler: 1 while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI) {} |
내부 클럭 HIS로 선언하고 prescaler을 128로 선언해서 최소 속도로 동작한다. 설정이 완료된 후 안정화 될 때까지 기다린다. |
3. 인터럽트를 선언한다.
EXTI_SetPinSensitivity(EXTI_Pin_0, EXTI_Trigger_Falling); enableInterrupts(); //EA enable |
PIN0에 해당하는 I/O중 GPIO_Mode_In_PU_IT 로 선언된 포트에 에지가 Trigger_Falling 으로 입력되면 인터럽트가 발생 하게 된다.
인터럽트가 동작되는 곳은 INTERRUPT_HANDLER(EXTI0_IRQHandler,8) 에 있다. |
4. 다른 동작을 한다.
실제 운영을 위해 동작을 하면 된다.
이로서 간단하게 STM8L을 살펴보았다.
예제 소스가 필요하다면 Comment에 메일 주소를 달아 주면 보내드리도록 하겠다. -> 하드디스크 문제로 소스가 분실되었습니다.^.^
사실 타이머,ADC등 다양한 내용이 많으나 stm8l15x_stdperiph_lib_um.chm에 들어있는 예제 만큼 잘 설명 할 수 없을 듯 하다. 문서 참 잘 만들었다.
예제 소스
예제 회로
'공부 > STM8' 카테고리의 다른 글
[STM8L] 참고회로 (0) | 2012.11.12 |
---|---|
STM8 관련 국내 사이트 (0) | 2012.11.12 |
[STM8] STM8L 해보기 5 (0) | 2012.11.12 |
[STM8] STM8L 해보기 4 (0) | 2012.11.12 |
[STM8] STM8L 해보기 3 (0) | 2012.11.12 |