текучка
This commit is contained in:
1 parent
b920713163
commit
47ff1ce4eb
7 files changed
+141
-86
No files matched your search
@@ -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();
|
||||
}
|
||||
Reference in new issue
Block a user