You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.4 KiB

/*
* ext_interrupt.c
*
* Created on: 3 Sep 2019
* Author: maximilian
*/
#include "ext_interrupt.h"
void initExtInt(void)
{
// Initialization structs
GPIO_InitTypeDef exti_gpio;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//Additionally we need to initialize corresponding GPIOs
exti_gpio.GPIO_Pin = GPIO_Pin_8;
exti_gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
exti_gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &exti_gpio);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource8);
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line8;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //Enable keypad external interrupt channel
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F; //Priority 2,
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F; //Sub priority 2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //Enable external interrupt channel
NVIC_Init(&NVIC_InitStructure);
osPrintf("Ext. int initialized.");
}
void EXTI9_5_IRQHandler(void)
{
osPrintf("Got interrupt.");
if(EXTI_GetITStatus(EXTI_Line8) != RESET) {
EXTI_ClearITPendingBit(EXTI_Line0);
}
}