From 9c78fdbfb0be315863ac1f5c0e00a598f9fec54e Mon Sep 17 00:00:00 2001 From: ZYQ-FEIYUE <1404806582@qq.com> Date: Sat, 20 Aug 2022 23:37:10 +0800 Subject: [PATCH 1/3] add uart4 and uart5 --- cores/arduino/HardwareSerial.cpp | 38 +++++++++++++++++++++++ cores/arduino/HardwareSerial.h | 21 +++++-------- cores/arduino/libcore/config/mcu_config.h | 12 +++++++ 3 files changed, 58 insertions(+), 13 deletions(-) diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index 6fba901..e5ad402 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -150,6 +150,26 @@ void HardwareSerial::begin( crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_USART3_PERIPH_CLOCK, TRUE); } + else if(_USARTx == UART4) + { + GPIOx = GPIOA; + Tx_Pin = GPIO_Pin_0; + Rx_Pin = GPIO_Pin_1; + USARTx_IRQn = UART4_IRQn; + + crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE); + crm_periph_clock_enable(CRM_UART4_PERIPH_CLOCK, TRUE); + } + else if(_USARTx == UART5) + { + GPIOx = GPIOB; + Tx_Pin = GPIO_Pin_9; + Rx_Pin = GPIO_Pin_8; + USARTx_IRQn = UART5_IRQn; + + crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE); + crm_periph_clock_enable(CRM_UART5_PERIPH_CLOCK, TRUE); + } else { return; @@ -290,3 +310,21 @@ extern "C" SERIAL_3_IRQ_HANDLER_DEF() Serial3.IRQHandler(); } #endif + +#if SERIAL_4_ENABLE +HardwareSerial Serial4(SERIAL_4_UART); + +extern "C" SERIAL_4_IRQ_HANDLER_DEF() +{ + Serial4.IRQHandler(); +} +#endif + +#if SERIAL_5_ENABLE +HardwareSerial Serial5(SERIAL_5_UART); + +extern "C" SERIAL_5_IRQ_HANDLER_DEF() +{ + Serial5.IRQHandler(); +} +#endif diff --git a/cores/arduino/HardwareSerial.h b/cores/arduino/HardwareSerial.h index 1790f37..59f0584 100644 --- a/cores/arduino/HardwareSerial.h +++ b/cores/arduino/HardwareSerial.h @@ -29,19 +29,6 @@ typedef enum { - SERIAL_7N1, - SERIAL_7N2, - SERIAL_7E1, - SERIAL_7E2, - SERIAL_7O1, - SERIAL_7O2, - SERIAL_7N0_5, - SERIAL_7N1_5, - SERIAL_7E0_5, - SERIAL_7E1_5, - SERIAL_7O0_5, - SERIAL_7O1_5, - SERIAL_8N1, SERIAL_8N2, SERIAL_8E1, @@ -139,4 +126,12 @@ extern HardwareSerial Serial2; extern HardwareSerial Serial3; #endif +#if SERIAL_4_ENABLE +extern HardwareSerial Serial4; +#endif + +#if SERIAL_5_ENABLE +extern HardwareSerial Serial5; +#endif + #endif diff --git a/cores/arduino/libcore/config/mcu_config.h b/cores/arduino/libcore/config/mcu_config.h index e0e5d49..b7016cb 100644 --- a/cores/arduino/libcore/config/mcu_config.h +++ b/cores/arduino/libcore/config/mcu_config.h @@ -54,6 +54,18 @@ # define SERIAL_3_IRQ_HANDLER_DEF() void USART3_IRQHandler(void) #endif +#define SERIAL_4_ENABLE 1 +#if SERIAL_4_ENABLE +# define SERIAL_4_UART UART4 +# define SERIAL_4_IRQ_HANDLER_DEF() void UART4_IRQHandler(void) +#endif + +#define SERIAL_5_ENABLE 1 +#if SERIAL_5_ENABLE +# define SERIAL_5_UART UART5 +# define SERIAL_5_IRQ_HANDLER_DEF() void UART5_IRQHandler(void) +#endif + /* Wire (Software I2C) */ #define WIRE_USE_FULL_SPEED_I2C 0 #define WIRE_SDA_PIN PB7 From b8ab5ef1bae2c2f0f62738d651ec4864e09c94c7 Mon Sep 17 00:00:00 2001 From: ZYQ-FEIYUE <1404806582@qq.com> Date: Sun, 21 Aug 2022 09:13:25 +0800 Subject: [PATCH 2/3] add uart4 and uart5 --- cores/arduino/HardwareSerial.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index e5ad402..f8e5b4b 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -159,6 +159,8 @@ void HardwareSerial::begin( crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_UART4_PERIPH_CLOCK, TRUE); + crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK,TRUE); + gpio_pin_remap_config(UART4_GMUX_0010, TRUE); } else if(_USARTx == UART5) { @@ -169,6 +171,8 @@ void HardwareSerial::begin( crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_UART5_PERIPH_CLOCK, TRUE); + crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK,TRUE); + gpio_pin_remap_config(UART5_GMUX_0001, TRUE); } else { From c4cfc91d3e530e748509a8c1490ac7d0580e3ed2 Mon Sep 17 00:00:00 2001 From: ZYQ-FEIYUE <1404806582@qq.com> Date: Sun, 21 Aug 2022 09:19:12 +0800 Subject: [PATCH 3/3] fix bug --- platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index 3b81079..9968a51 100644 --- a/platform.txt +++ b/platform.txt @@ -65,4 +65,4 @@ tools.Artery_ISP_Console.path={runtime.tools.Artery_ISP_Console.path} tools.Artery_ISP_Console.upload.params.verbose=-d tools.Artery_ISP_Console.upload.params.quiet= -tools.Artery_ISP_Console.upload.pattern=sh "{path}/{cmd}" "{build.path}/{build.project_name}.hex" +tools.Artery_ISP_Console.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.hex"