2017-11-07 6 views
2

STM32F0308 Dicovery Board를 사용하고 있습니다. PORTB의 PIN11에 외부 인터럽트를 사용하고 싶습니다. 문제는 내가 PORTB를 호출 할 수 없다는 것입니다. 마이크로 컨트롤러는 여전히 PORTA의 PIN11을 사용합니다. 나는 항구의 핀이 함께 클럽 활동을하지만 PORTB를 여전히 지정하고있다. 마이크로는 PORTA를 사용하고있다. 이 코드 라인stm32f030의 포트 B에서 외부 인터럽트 사용

SYSCFG->EXTICR[3] = SYSCFG_EXTICR3_EXTI11_PB; 

에 약간의 문제가 있다고 생각 여기에 당신은 SYSCFG을 위해 시계를 사용하도록 설정해야합니다 코드

#include"stm32f0xx.h" 
volatile int portBPin10Counter; 

void EXTI4_15_IRQHandler(void) 
{ 
    if(EXTI->PR & EXTI_PR_PR11) 
    { 
    EXTI->PR |= EXTI_PR_PR11; 
    portBPin10Counter++; 
    } 
} 

int main(void) 
{ 
    RCC->AHBENR |=RCC_AHBENR_GPIOBEN; 

    GPIOB->MODER &= ~GPIO_MODER_MODER11; 
    GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR11; 

    SYSCFG->EXTICR[3] =SYSCFG_EXTICR3_EXTI11_PB; 

    EXTI->RTSR |= EXTI_RTSR_TR11; 
    EXTI->IMR |= EXTI_IMR_MR11; 

    NVIC_EnableIRQ(EXTI4_15_IRQn); 
    NVIC_SetPriority(EXTI4_15_IRQn,1); 

    while(1) 
    { 
    } 
} 
+0

HAL이 어떻게 작동하는지 볼 수 있습니다. – JMA

답변

2

입니다. 난 그냥 설명서를보고, 손 F0 파일이 없습니다 :

RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; 

그렇지 않으면, SYSCFG->EXTICR에 작성하는 것은 아무런 효과가 없습니다.