mirror of
https://github.com/google/pebble.git
synced 2025-05-04 00:41:40 -04:00
56 lines
1.9 KiB
C
56 lines
1.9 KiB
C
/*
|
|
* Copyright 2024 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "board/board.h"
|
|
|
|
//! For simplicity we just configure all our EXTI-related interrupts to the same priority. This
|
|
//! way we don't have to worry about different lines wanting differing priorities when they share
|
|
//! the same NVIC channel (and therefore the same priority)
|
|
#define EXTI_PRIORITY (0x0e)
|
|
|
|
typedef enum {
|
|
ExtiTrigger_Rising,
|
|
ExtiTrigger_Falling,
|
|
ExtiTrigger_RisingFalling
|
|
} ExtiTrigger;
|
|
|
|
//! See section 12.2.5 "External interrupt/event line mapping" in the STM32F2 reference manual
|
|
typedef enum {
|
|
ExtiLineOther_RTCAlarm = 17,
|
|
ExtiLineOther_RTCWakeup = 22
|
|
} ExtiLineOther;
|
|
|
|
typedef void (*ExtiHandlerCallback)(bool *should_context_switch);
|
|
|
|
//! Configures the given EXTI and NVIC for the given configuration.
|
|
void exti_configure_pin(ExtiConfig cfg, ExtiTrigger trigger, ExtiHandlerCallback cb);
|
|
//! Configures the given EXTI and NVIC for the given configuration.
|
|
void exti_configure_other(ExtiLineOther exti_line, ExtiTrigger trigger);
|
|
|
|
static inline void exti_enable(ExtiConfig config);
|
|
static inline void exti_disable(ExtiConfig config);
|
|
|
|
void exti_enable_other(ExtiLineOther exti_line);
|
|
void exti_disable_other(ExtiLineOther exti_line);
|
|
|
|
void exti_set_pending(ExtiConfig cfg);
|
|
|
|
void exti_clear_pending_other(ExtiLineOther exti_line);
|
|
|
|
#include "exti.inl.h"
|
|
|