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에 들어있는 예제 만큼 잘 설명 할 수 없을 듯 하다. 문서 참 잘 만들었다.

 

예제 소스

um0774.zip

 

예제 회로

1265357684.pdf

 

 

'공부 > 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

+ Recent posts