mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
Add variable numbers of SPI/UART/I2C/EXTI devices - #1346
This commit is contained in:
parent
6634aad17c
commit
ec20db1438
@ -70,20 +70,21 @@ print("Variables = "+str(variables))
|
||||
print("JsVar size = "+str(var_size))
|
||||
print("VarCache size = "+str(var_cache_size))
|
||||
|
||||
flash_page_size = 1024
|
||||
|
||||
if LINUX:
|
||||
flash_page_size = 1024
|
||||
flash_saved_code_pages = 8
|
||||
total_flash = flash_page_size*flash_saved_code_pages
|
||||
else: # NOT LINUX
|
||||
# 100xB and 103xB are mid-density, so have 1k page sizes
|
||||
if board.chip["part"][:7]=="STM32F1" and board.chip["part"][10]=="B": board.chip["subfamily"]="MD";
|
||||
|
||||
flash_page_size = 1024 # just a guess
|
||||
if board.chip["family"]=="STM32F1": flash_page_size = 1024 if "subfamily" in board.chip and board.chip["subfamily"]=="MD" else 2048
|
||||
if board.chip["family"]=="STM32F1":
|
||||
flash_page_size = 1024 if "subfamily" in board.chip and board.chip["subfamily"]=="MD" else 2048
|
||||
if board.chip["family"]=="STM32F2":
|
||||
flash_page_size = 128*1024
|
||||
if board.chip["family"]=="STM32F3": flash_page_size = 2*1024
|
||||
if board.chip["family"]=="STM32F3":
|
||||
flash_page_size = 2*1024
|
||||
if board.chip["family"]=="STM32F4":
|
||||
flash_page_size = 128*1024
|
||||
if board.chip["family"]=="NRF51":
|
||||
@ -161,8 +162,11 @@ codeOut("#define PC_BOARD_CHIP_FAMILY \""+board.chip["family"]+"\"")
|
||||
|
||||
codeOut("")
|
||||
|
||||
linker_end_var = "_end";
|
||||
linker_etext_var = "_etext";
|
||||
# Linker vars used for:
|
||||
linker_end_var = "_end"; # End of RAM (eg top of stack)
|
||||
linker_etext_var = "_etext"; # End of text (function) section
|
||||
# External interrupt count
|
||||
exti_count = 16
|
||||
|
||||
if board.chip["family"]=="LINUX":
|
||||
board.chip["class"]="LINUX"
|
||||
@ -192,12 +196,14 @@ elif board.chip["family"]=="NRF51":
|
||||
board.chip["class"]="NRF51"
|
||||
linker_etext_var = "__etext";
|
||||
linker_end_var = "end";
|
||||
exti_count = 4
|
||||
codeOut('#include "nrf.h"')
|
||||
elif board.chip["family"]=="NRF52":
|
||||
board.chip["class"]="NRF52"
|
||||
linker_etext_var = "__etext";
|
||||
linker_end_var = "end";
|
||||
codeOut('#include "nrf.h"') # TRY THIS BUT NOT SURE~!
|
||||
exti_count = 8
|
||||
codeOut('#include "nrf.h"')
|
||||
elif board.chip["family"]=="EFM32GG":
|
||||
board.chip["class"]="EFM32"
|
||||
linker_etext_var = "__etext";
|
||||
@ -210,6 +216,7 @@ elif board.chip["family"]=="ESP8266":
|
||||
board.chip["class"]="ESP8266"
|
||||
elif board.chip["family"]=="ESP32":
|
||||
board.chip["class"]="ESP32"
|
||||
exti_count = 40
|
||||
elif board.chip["family"]=="SAMD":
|
||||
board.chip["class"]="SAMD"
|
||||
codeOut('#include "targetlibs/samd/include/due_sam3x.init.h"')
|
||||
@ -285,12 +292,14 @@ else:
|
||||
codeOut("#define FLASH_SAVED_CODE_START "+str(flash_saved_code_start))
|
||||
codeOut("#define FLASH_SAVED_CODE_LENGTH "+str(int(flash_page_size*flash_saved_code_pages)))
|
||||
codeOut("");
|
||||
|
||||
codeOut("#define CLOCK_SPEED_MHZ "+str(board.chip["speed"]))
|
||||
codeOut("#define USART_COUNT "+str(board.chip["usart"]))
|
||||
codeOut("#define SPI_COUNT "+str(board.chip["spi"]))
|
||||
codeOut("#define I2C_COUNT "+str(board.chip["i2c"]))
|
||||
codeOut("#define ADC_COUNT "+str(board.chip["adc"]))
|
||||
codeOut("#define DAC_COUNT "+str(board.chip["dac"]))
|
||||
codeOut("#define EXTI_COUNT "+str(exti_count))
|
||||
codeOut("");
|
||||
codeOut("#define DEFAULT_CONSOLE_DEVICE "+board.info["default_console"]);
|
||||
if "default_console_tx" in board.info:
|
||||
|
||||
@ -541,8 +541,12 @@ const char *jshGetDeviceString(
|
||||
case EV_TERMINAL: return "Terminal";
|
||||
#endif
|
||||
case EV_SERIAL1: return "Serial1";
|
||||
#if USART_COUNT>=2
|
||||
case EV_SERIAL2: return "Serial2";
|
||||
#endif
|
||||
#if USART_COUNT>=3
|
||||
case EV_SERIAL3: return "Serial3";
|
||||
#endif
|
||||
#if USART_COUNT>=4
|
||||
case EV_SERIAL4: return "Serial4";
|
||||
#endif
|
||||
@ -604,43 +608,25 @@ IOEventFlags jshFromDeviceString(
|
||||
#endif
|
||||
}
|
||||
else if (device[0]=='S') {
|
||||
if (device[1]=='e' && device[2]=='r' && device[3]=='i' && device[4]=='a' && device[5]=='l' && device[6]!=0 && device[7]==0) {
|
||||
if (device[6]=='1') return EV_SERIAL1;
|
||||
if (device[6]=='2') return EV_SERIAL2;
|
||||
if (device[6]=='3') return EV_SERIAL3;
|
||||
#if USART_COUNT>=4
|
||||
if (device[6]=='4') return EV_SERIAL4;
|
||||
#if USART_COUNT>0
|
||||
if (device[1]=='e' && device[2]=='r' && device[3]=='i' && device[4]=='a' && device[5]=='l' &&
|
||||
device[6]>='1' && (device[6]-'1')<USART_COUNT &&
|
||||
device[7]==0)
|
||||
return EV_SERIAL1+device[6]-'1';
|
||||
#endif
|
||||
#if USART_COUNT>=5
|
||||
if (device[6]=='5') return EV_SERIAL5;
|
||||
#endif
|
||||
#if USART_COUNT>=6
|
||||
if (device[6]=='6') return EV_SERIAL6;
|
||||
#endif
|
||||
}
|
||||
if (device[1]=='P' && device[2]=='I' && device[3]!=0 && device[4]==0) {
|
||||
#if SPI_COUNT>=1
|
||||
if (device[3]=='1') return EV_SPI1;
|
||||
#endif
|
||||
#if SPI_COUNT>=2
|
||||
if (device[3]=='2') return EV_SPI2;
|
||||
#endif
|
||||
#if SPI_COUNT>=3
|
||||
if (device[3]=='3') return EV_SPI3;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if (device[0]=='I' && device[1]=='2' && device[2]=='C' && device[3]!=0 && device[4]==0) {
|
||||
#if I2C_COUNT>=1
|
||||
if (device[3]=='1') return EV_I2C1;
|
||||
#endif
|
||||
#if I2C_COUNT>=2
|
||||
if (device[3]=='2') return EV_I2C2;
|
||||
#endif
|
||||
#if I2C_COUNT>=3
|
||||
if (device[3]=='3') return EV_I2C3;
|
||||
#if SPI_COUNT>0
|
||||
if (device[1]=='P' && device[2]=='I' &&
|
||||
device[3]>='1' && (device[3]-'1')<SPI_COUNT &&
|
||||
device[4]==0)
|
||||
return EV_SPI1+device[3]-'1';
|
||||
#endif
|
||||
}
|
||||
#if I2C_COUNT>0
|
||||
else if (device[0]=='I' && device[1]=='2' && device[2]=='C' &&
|
||||
device[3]>='1' && (device[3]-'1')<I2C_COUNT &&
|
||||
device[4]==0)
|
||||
return EV_I2C1+device[3]-'1';
|
||||
#endif
|
||||
return EV_NONE;
|
||||
}
|
||||
|
||||
|
||||
@ -35,30 +35,15 @@ void jshResetDevices();
|
||||
typedef enum {
|
||||
// device type
|
||||
EV_NONE,
|
||||
EV_EXTI0, // External Interrupt 0
|
||||
EV_EXTI1, // External Interrupt 1
|
||||
EV_EXTI2, // External Interrupt 2
|
||||
EV_EXTI3, // External Interrupt 3
|
||||
EV_EXTI4, // External Interrupt 4
|
||||
EV_EXTI5, // External Interrupt 5
|
||||
EV_EXTI6, // External Interrupt 6
|
||||
EV_EXTI7, // External Interrupt 7
|
||||
EV_EXTI8, // External Interrupt 8
|
||||
EV_EXTI9, // External Interrupt 9
|
||||
EV_EXTI10, // External Interrupt 10
|
||||
EV_EXTI11, // External Interrupt 11
|
||||
EV_EXTI12, // External Interrupt 12
|
||||
EV_EXTI13, // External Interrupt 13
|
||||
EV_EXTI14, // External Interrupt 14
|
||||
EV_EXTI15, // External Interrupt 15
|
||||
EV_EXTI_MAX = EV_EXTI15,
|
||||
EV_EXTI0, ///< External Interrupt
|
||||
EV_EXTI_MAX = EV_EXTI0 + EXTI_COUNT - 1,
|
||||
EV_SERIAL_START,
|
||||
EV_LOOPBACKA = EV_SERIAL_START,
|
||||
EV_LOOPBACKB,
|
||||
EV_LIMBO, // Where console output goes right after boot - one sec later we move it to USB/Serial
|
||||
EV_USBSERIAL,
|
||||
EV_LIMBO, ///< Where console output goes right after boot - one sec later we move it to USB/Serial
|
||||
EV_USBSERIAL, ///< USB CDC Serial Data
|
||||
#ifdef BLUETOOTH
|
||||
EV_BLUETOOTH,
|
||||
EV_BLUETOOTH, ///< Bluetooth LE
|
||||
#endif
|
||||
#ifdef USE_TELNET
|
||||
EV_TELNET,
|
||||
@ -66,32 +51,56 @@ typedef enum {
|
||||
#ifdef USE_TERMINAL
|
||||
EV_TERMINAL, // Built-in VT100 terminal
|
||||
#endif
|
||||
#if USART_COUNT>=1
|
||||
EV_SERIAL1, // Used for IO for UARTS
|
||||
#endif
|
||||
#if USART_COUNT>=2
|
||||
EV_SERIAL2,
|
||||
#endif
|
||||
#if USART_COUNT>=3
|
||||
EV_SERIAL3,
|
||||
#endif
|
||||
#if USART_COUNT>=4
|
||||
EV_SERIAL4,
|
||||
#endif
|
||||
#if USART_COUNT>=5
|
||||
EV_SERIAL5,
|
||||
#endif
|
||||
#if USART_COUNT>=6
|
||||
EV_SERIAL6,
|
||||
EV_SERIAL_MAX = EV_SERIAL6,
|
||||
#endif
|
||||
#if USART_COUNT>=1
|
||||
EV_SERIAL_MAX = EV_SERIAL1 + USART_COUNT - 1,
|
||||
EV_SERIAL1_STATUS, // Used to store serial status info
|
||||
EV_SERIAL2_STATUS,
|
||||
EV_SERIAL3_STATUS,
|
||||
EV_SERIAL4_STATUS,
|
||||
EV_SERIAL5_STATUS,
|
||||
EV_SERIAL6_STATUS,
|
||||
EV_SERIAL_STATUS_MAX = EV_SERIAL6_STATUS,
|
||||
EV_SERIAL_STATUS_MAX = EV_SERIAL1_STATUS + USART_COUNT - 1,
|
||||
#endif
|
||||
#ifdef BLUETOOTH
|
||||
EV_BLUETOOTH_PENDING, // Pending tasks set by
|
||||
#endif
|
||||
EV_SPI1,
|
||||
#if SPI_COUNT>=1
|
||||
EV_SPI1, ///< SPI Devices
|
||||
#endif
|
||||
#if SPI_COUNT>=2
|
||||
EV_SPI2,
|
||||
#endif
|
||||
#if SPI_COUNT>=3
|
||||
EV_SPI3,
|
||||
EV_SPI_MAX = EV_SPI3,
|
||||
EV_I2C1,
|
||||
#endif
|
||||
#if SPI_COUNT>=1
|
||||
EV_SPI_MAX = EV_SPI1 + SPI_COUNT - 1,
|
||||
#endif
|
||||
#if I2C_COUNT>=1
|
||||
EV_I2C1, ///< I2C Devices
|
||||
#endif
|
||||
#if I2C_COUNT>=2
|
||||
EV_I2C2,
|
||||
#endif
|
||||
#if I2C_COUNT>=3
|
||||
EV_I2C3,
|
||||
EV_I2C_MAX = EV_I2C3,
|
||||
|
||||
#endif
|
||||
#if I2C_COUNT>=1
|
||||
EV_I2C_MAX = EV_I2C1 + I2C_COUNT - 1,
|
||||
#endif
|
||||
EV_DEVICE_MAX = EV_SERIAL_STATUS_MAX,
|
||||
// EV_DEVICE_MAX should not be >64 - see DEVICE_INITIALISED_FLAGS
|
||||
EV_TYPE_MASK = NEXT_POWER_2(EV_DEVICE_MAX) - 1,
|
||||
@ -107,15 +116,28 @@ typedef enum {
|
||||
EV_EXTI_IS_HIGH = EV_TYPE_MASK+1,
|
||||
} PACKED_FLAGS IOEventFlags;
|
||||
|
||||
#define DEVICE_SANITY_CHECK() if (EV_TYPE_MASK!=63) jsError("DEVICE_SANITY_CHECK failed")
|
||||
#define DEVICE_SANITY_CHECK() if (EV_TYPE_MASK>63) jsError("DEVICE_SANITY_CHECK failed")
|
||||
|
||||
// Return true if the device is a USART
|
||||
#if USART_COUNT>=1
|
||||
#define DEVICE_IS_USART(X) (((X)>=EV_SERIAL_START) && ((X)<=EV_SERIAL_MAX))
|
||||
#define DEVICE_IS_USART_STATUS(X) (((X)>=EV_SERIAL1_STATUS) && ((X)<=EV_SERIAL_STATUS_MAX))
|
||||
#else
|
||||
#define DEVICE_IS_USART(X) (false)
|
||||
#define DEVICE_IS_USART_STATUS(X) (false)
|
||||
#endif
|
||||
|
||||
// Return true if the device is an SPI.
|
||||
#if SPI_COUNT>=1
|
||||
#define DEVICE_IS_SPI(X) (((X)>=EV_SPI1) && ((X)<=EV_SPI_MAX))
|
||||
#else
|
||||
#define DEVICE_IS_SPI(X) (false)
|
||||
#endif
|
||||
#if I2C_COUNT>=1
|
||||
#define DEVICE_IS_I2C(X) (((X)>=EV_I2C1) && ((X)<=EV_I2C_MAX))
|
||||
#else
|
||||
#define DEVICE_IS_I2C(X) (false)
|
||||
#endif
|
||||
#define DEVICE_IS_EXTI(X) (((X)>=EV_EXTI0) && ((X)<=EV_EXTI_MAX))
|
||||
|
||||
#define IOEVENTFLAGS_SERIAL_TO_SERIAL_STATUS(X) ((X) + EV_SERIAL1_STATUS - EV_SERIAL1)
|
||||
|
||||
48
src/jspin.c
48
src/jspin.c
@ -259,44 +259,24 @@ void jshPinOutput(
|
||||
|
||||
// Convert an event type flag into a jshPinFunction for an actual hardware device
|
||||
JshPinFunction jshGetPinFunctionFromDevice(IOEventFlags device) {
|
||||
switch (device) {
|
||||
case EV_SERIAL1 : return JSH_USART1;
|
||||
case EV_SERIAL2 : return JSH_USART2;
|
||||
case EV_SERIAL3 : return JSH_USART3;
|
||||
case EV_SERIAL4 : return JSH_USART4;
|
||||
case EV_SERIAL5 : return JSH_USART5;
|
||||
case EV_SERIAL6 : return JSH_USART6;
|
||||
|
||||
case EV_SPI1 : return JSH_SPI1;
|
||||
case EV_SPI2 : return JSH_SPI2;
|
||||
case EV_SPI3 : return JSH_SPI3;
|
||||
|
||||
case EV_I2C1 : return JSH_I2C1;
|
||||
case EV_I2C2 : return JSH_I2C2;
|
||||
case EV_I2C3 : return JSH_I2C3;
|
||||
default: return 0;
|
||||
}
|
||||
if (DEVICE_IS_USART(device))
|
||||
return JSH_USART1 + device - EV_SERIAL1;
|
||||
if (DEVICE_IS_SPI(device))
|
||||
return JSH_SPI1 + device - EV_SPI1;
|
||||
if (DEVICE_IS_I2C(device))
|
||||
return JSH_I2C1 + device - EV_I2C1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Convert a jshPinFunction to an event type flag
|
||||
IOEventFlags jshGetFromDevicePinFunction(JshPinFunction func) {
|
||||
switch (func & JSH_MASK_TYPE) {
|
||||
case JSH_USART1 : return EV_SERIAL1;
|
||||
case JSH_USART2 : return EV_SERIAL2;
|
||||
case JSH_USART3 : return EV_SERIAL3;
|
||||
case JSH_USART4 : return EV_SERIAL4;
|
||||
case JSH_USART5 : return EV_SERIAL5;
|
||||
case JSH_USART6 : return EV_SERIAL6;
|
||||
|
||||
case JSH_SPI1 : return EV_SPI1;
|
||||
case JSH_SPI2 : return EV_SPI2;
|
||||
case JSH_SPI3 : return EV_SPI3;
|
||||
|
||||
case JSH_I2C1 : return EV_I2C1;
|
||||
case JSH_I2C2 : return EV_I2C2;
|
||||
case JSH_I2C3 : return EV_I2C3;
|
||||
default: return 0;
|
||||
}
|
||||
if (JSH_PINFUNCTION_IS_USART(func))
|
||||
return EV_SERIAL1 + func - JSH_USART1;
|
||||
if (JSH_PINFUNCTION_IS_SPI(func))
|
||||
return EV_SPI1 + func - JSH_SPI1;
|
||||
if (JSH_PINFUNCTION_IS_I2C(func))
|
||||
return EV_I2C1 + func - JSH_I2C1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Try and find a specific type of function for the given pin. Can be given an invalid pin and will return 0. */
|
||||
|
||||
@ -184,73 +184,73 @@ void EXTI0_IRQHandler(void) {
|
||||
}
|
||||
void EXTI1_IRQHandler(void) {
|
||||
if (EXTI_GetITStatus(EXTI_Line1) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI1);
|
||||
jshPushIOWatchEvent(EV_EXTI0+1);
|
||||
EXTI_ClearITPendingBit(EXTI_Line1);
|
||||
}
|
||||
}
|
||||
void EXTI2_IRQHandler(void) {
|
||||
if (EXTI_GetITStatus(EXTI_Line2) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI2);
|
||||
jshPushIOWatchEvent(EV_EXTI0+2);
|
||||
EXTI_ClearITPendingBit(EXTI_Line2);
|
||||
}
|
||||
}
|
||||
void EXTI3_IRQHandler(void) {
|
||||
if (EXTI_GetITStatus(EXTI_Line3) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI3);
|
||||
jshPushIOWatchEvent(EV_EXTI0+3);
|
||||
EXTI_ClearITPendingBit(EXTI_Line3);
|
||||
}
|
||||
}
|
||||
void EXTI4_IRQHandler(void) {
|
||||
if (EXTI_GetITStatus(EXTI_Line4) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI4);
|
||||
jshPushIOWatchEvent(EV_EXTI0+4);
|
||||
EXTI_ClearITPendingBit(EXTI_Line4);
|
||||
}
|
||||
}
|
||||
void EXTI9_5_IRQHandler(void) {
|
||||
if (EXTI_GetITStatus(EXTI_Line5) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI5);
|
||||
jshPushIOWatchEvent(EV_EXTI0+5);
|
||||
EXTI_ClearITPendingBit(EXTI_Line5);
|
||||
}
|
||||
if (EXTI_GetITStatus(EXTI_Line6) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI6);
|
||||
jshPushIOWatchEvent(EV_EXTI0+6);
|
||||
EXTI_ClearITPendingBit(EXTI_Line6);
|
||||
}
|
||||
if (EXTI_GetITStatus(EXTI_Line7) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI7);
|
||||
jshPushIOWatchEvent(EV_EXTI0+7);
|
||||
EXTI_ClearITPendingBit(EXTI_Line7);
|
||||
}
|
||||
if (EXTI_GetITStatus(EXTI_Line8) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI8);
|
||||
jshPushIOWatchEvent(EV_EXTI0+8);
|
||||
EXTI_ClearITPendingBit(EXTI_Line8);
|
||||
}
|
||||
if (EXTI_GetITStatus(EXTI_Line9) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI9);
|
||||
jshPushIOWatchEvent(EV_EXTI0+9);
|
||||
EXTI_ClearITPendingBit(EXTI_Line9);
|
||||
}
|
||||
}
|
||||
void EXTI15_10_IRQHandler(void) {
|
||||
if (EXTI_GetITStatus(EXTI_Line10) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI10);
|
||||
jshPushIOWatchEvent(EV_EXTI0+10);
|
||||
EXTI_ClearITPendingBit(EXTI_Line10);
|
||||
}
|
||||
if (EXTI_GetITStatus(EXTI_Line11) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI11);
|
||||
jshPushIOWatchEvent(EV_EXTI0+11);
|
||||
EXTI_ClearITPendingBit(EXTI_Line11);
|
||||
}
|
||||
if (EXTI_GetITStatus(EXTI_Line12) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI12);
|
||||
jshPushIOWatchEvent(EV_EXTI0+12);
|
||||
EXTI_ClearITPendingBit(EXTI_Line12);
|
||||
}
|
||||
if (EXTI_GetITStatus(EXTI_Line13) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI13);
|
||||
jshPushIOWatchEvent(EV_EXTI0+13);
|
||||
EXTI_ClearITPendingBit(EXTI_Line13);
|
||||
}
|
||||
if (EXTI_GetITStatus(EXTI_Line14) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI14);
|
||||
jshPushIOWatchEvent(EV_EXTI0+14);
|
||||
EXTI_ClearITPendingBit(EXTI_Line14);
|
||||
}
|
||||
if (EXTI_GetITStatus(EXTI_Line15) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI15);
|
||||
jshPushIOWatchEvent(EV_EXTI0+15);
|
||||
EXTI_ClearITPendingBit(EXTI_Line15);
|
||||
}
|
||||
}
|
||||
|
||||
@ -179,73 +179,73 @@ void EXTI0_IRQHandler(void) {
|
||||
}
|
||||
void EXTI1_IRQHandler(void) {
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_1) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI1);
|
||||
jshPushIOWatchEvent(EV_EXTI0+1);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_1);
|
||||
}
|
||||
}
|
||||
void EXTI2_IRQHandler(void) {
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_2) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI2);
|
||||
jshPushIOWatchEvent(EV_EXTI0+2);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_2);
|
||||
}
|
||||
}
|
||||
void EXTI3_IRQHandler(void) {
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_3) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI3);
|
||||
jshPushIOWatchEvent(EV_EXTI0+3);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_3);
|
||||
}
|
||||
}
|
||||
void EXTI4_IRQHandler(void) {
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_4) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI4);
|
||||
jshPushIOWatchEvent(EV_EXTI0+4);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_4);
|
||||
}
|
||||
}
|
||||
void EXTI9_5_IRQHandler(void) {
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_5) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI5);
|
||||
jshPushIOWatchEvent(EV_EXTI0+5);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_5);
|
||||
}
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_6) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI6);
|
||||
jshPushIOWatchEvent(EV_EXTI0+6);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_6);
|
||||
}
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_7) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI7);
|
||||
jshPushIOWatchEvent(EV_EXTI0+7);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_7);
|
||||
}
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_8) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI8);
|
||||
jshPushIOWatchEvent(EV_EXTI0+8);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_8);
|
||||
}
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_9) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI9);
|
||||
jshPushIOWatchEvent(EV_EXTI0+9);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_9);
|
||||
}
|
||||
}
|
||||
void EXTI15_10_IRQHandler(void) {
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_10) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI10);
|
||||
jshPushIOWatchEvent(EV_EXTI0+10);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_10);
|
||||
}
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_11) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI11);
|
||||
jshPushIOWatchEvent(EV_EXTI0+11);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_11);
|
||||
}
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_12) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI12);
|
||||
jshPushIOWatchEvent(EV_EXTI0+12);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_12);
|
||||
}
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_13) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI13);
|
||||
jshPushIOWatchEvent(EV_EXTI0+13);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_13);
|
||||
}
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_14) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI14);
|
||||
jshPushIOWatchEvent(EV_EXTI0+14);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_14);
|
||||
}
|
||||
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_15) == SET) {
|
||||
jshPushIOWatchEvent(EV_EXTI15);
|
||||
jshPushIOWatchEvent(EV_EXTI0+15);
|
||||
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_15);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user