This repository has been archived on 2024-05-28. You can view files and clone it, but cannot push or open issues or pull requests.
2023-11-14 16:25:09 -05:00

46 lines
1007 B
C++
Executable File

#ifndef STM32U5_HAL_EXTI_HPP
#define STM32U5_HAL_EXTI_HPP
#include "global_variable.h"
#include "prepherials.h"
#include "reg_exti_gen.h"
class Exti {
public:
EXTI_TypeDef *ins;
reg_exti_t *reg;
void (*callback)() = nullptr;
public:
Exti() = default;
void setup() {
// enable clock
RCC->APB3ENR |= RCC_APB3ENR_SYSCFGEN;
// enable interrupt
NVIC_EnableIRQ(EXTI0_IRQn);
reg = (reg_exti_t *) EXTI;
ins = (EXTI_TypeDef *) EXTI;
}
void init(int line, int mode, int trigger) {
// set mode
}
// falling edge or rising edge
void set_trigger(int line, int trigger, void(*_callback)()) {
NVIC_EnableIRQ(EXTI2_IRQn);
reg->ftsr1.ft2 = 1;
reg->imr1.im2 = 1;
reg->r1.exti16_23 = 1; // pb 1 as interrupt
callback = _callback;
}
void interrupt() {
uint32_t tmp = ins->FPR1;
reg->fpr1.fpif2 = 1;
if (callback != nullptr) callback();
}
};
#endif