текучка

This commit is contained in:
klassents committed 2024-10-09 11:27:37 +07:00
1 parent b920713163
commit 47ff1ce4eb
7 files changed
+141 -86

No files matched your search

+6 -11
View File
@@ -4,6 +4,7 @@
#include "pins_arduino.h"
#include "wiring_digital.h"
#include "WInterrupts.h"
#include "wiring_LL.h"
extern void ErrorMsgHandler(const char * msg);
@@ -100,33 +101,27 @@ void detachInterrupt(uint8_t interruptNum)
void disableInterrupt(uint8_t interruptNum)
{
if(interruptNum < EXTERNAL_NUM_INTERRUPTS)
{
int irq_line_num = interruptToGpioIntLine(interruptNum) >> GPIO_IRQ_LINE_S;
// disable gpio interrupt line
GPIO_IRQ->ENABLE_CLEAR = (1 << irq_line_num);
}
GPIO_IRQ_LINE_DISABLE(interruptToGpioIntLine(interruptNum));
}
// enable single interrupt
void enableInterrupt(uint8_t interruptNum)
{
if(interruptNum < EXTERNAL_NUM_INTERRUPTS)
{
int irq_line_num = interruptToGpioIntLine(interruptNum) >> GPIO_IRQ_LINE_S;
// enable gpio interrupt line
GPIO_IRQ->ENABLE_SET = (1 << irq_line_num);
}
GPIO_IRQ_LINE_ENABLE(interruptToGpioIntLine(interruptNum));
}
// common gpio interrupt handler
void gpio_interrupts_handler(void) __attribute__((noinline, section(".ram_text")));
void gpio_interrupts_handler(void)
{
// go through all the interrupts and call the handler for the triggered line
for (uint8_t i = 0; i < EXTERNAL_NUM_INTERRUPTS; i++)
{
if (HAL_GPIO_LineInterruptState(interruptToGpioIntLine(i)))
if (GPIO_IRQ_LINE_STATE(interruptToGpioIntLine(i)))
intFunc[i]();
}
HAL_GPIO_ClearInterrupts();
GPIO_IRQ_CLEAR_ALL();
}