외부 인터럽트 설정
-----------------------------------------------------------------------------------------
int main(void)
{
uint8_t ch;
/* System Clocks Configuration */
RCC_Configuration(); //시스템 클럭을 살리고 주변 프리페럴럴 를 살린다.
RCC_GetClocksFreq(&rcc_clocks); //현재 설정된 클럭을 rcc_clocks 스트럭쳐로 가져 온다.
/* NVIC configuration */
NVIC_Configuration(); //인터럽트 백터 테이블을 선언 한고, 우선순위 선언, 인터럽트 살리기
/* Configure the GPIO ports */
GPIO_Configuration(); //기능에 따라 GPIO를 선언하고 동작 시킨다.
/* EXTI configuration */
EXTI_Configuration(); //외부 인터럽트를 위해 설정 한다.
-----------------------------------------------------------------------------------------
EXTI_Configuration(); 함수 는 외부 인터럽트를 설정 한다.
외부 인터럽트는 총 19개의 edge detecter 구성 되어 event 나 인터럽트 처리 에 사용된다.
rising, falling 또는 두개 한꺼번에 동작 가능 하도록 설정 할수 있습니다.
PORTA0,PORTB0 와 같이 여러개의 port의 같은 bit 는 한개의 인터럽처 처리가 된다.
또한 16번 인터럽트는 PVD,17번 RTC,18번 USB wakeup 로 사용된다.
NVIC에서 인터럽트를 사용하겠다고 설정하고,이함수에서 특성을 설정 하면되고
해당 인터럽트 백더 함수에 해당 인터럽트가 발생되면 처리될 소스를 코딩하면 된다.
-----------------------------------------------------------------------------------------
void EXTI_Configuration(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
/* Configure gpio as input : Button Left-WKUP */
/* Connect EXTI Line to gpio pin */
//특별한 용도로 사용함을 설정 한다.
GPIO_EXTILineConfig(GPIO_PORTSOURCE_KEY, GPIO_PINSOURCE_KEY1);
/* Configure EXTI Line to generate an interrupt */
EXTI_InitStructure.EXTI_Line = GPIO_EXTI_Line_KEY1; //특성 설정을 한다.
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure); // 인터럽트를 활성화 한다.
-----------------------------------------------------------------------------------------
GPIO_EXTILineConfig(); 는 특수 모드로 사용되는것을 설정하고
EXTI_Init(); 외부 인터럽트를 설정 한다.
'공부 > STM32' 카테고리의 다른 글
관심 가는 STM32F30x (0) | 2012.11.30 |
---|---|
STM32/STM32 시리얼 또는 USB 다운로드 지원 툴 (0) | 2012.11.13 |
[STM32] Source 보기 6 (0) | 2012.11.09 |
[STM32] Source 보기 5 (0) | 2012.11.09 |
[STM32] Source 보기 4 (0) | 2012.11.09 |