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.
49 lines
1.4 KiB
49 lines
1.4 KiB
5 years ago
|
/*
|
||
|
* 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);
|
||
|
}
|
||
|
}
|