2020 Modified 14 August 2012 by Alarus
2121 Modified 3 December 2013 by Matthijs Kooijman
2222 Modified 1 may 2023 by TempersLee
23+ Modified 8 September 2025 by Jobit Joseph (Universal CH32 RX Buffer Support)
2324*/
2425
2526#ifndef HardwareSerial_h
@@ -96,8 +97,12 @@ typedef enum {
9697#define SERIAL_9O0_5 0x37
9798#define SERIAL_9O1_5 0x3F
9899
99-
100-
100+ // Enable RX buffering for all CH32 series MCUs
101+ #if defined(CH32V003) || defined(CH32V203) || defined(CH32X035) || defined(CH32V103) || defined(CH32V307)
102+ #define ENABLE_RX_BUFFER 1
103+ #else
104+ #define ENABLE_RX_BUFFER 0
105+ #endif
101106
102107class HardwareSerial : public Stream {
103108
@@ -116,8 +121,6 @@ class HardwareSerial : public Stream {
116121 virtual int peek (void );
117122 virtual int read (void );
118123
119-
120-
121124 virtual size_t write (uint8_t );
122125 inline size_t write (unsigned long n)
123126 {
@@ -155,6 +158,15 @@ class HardwareSerial : public Stream {
155158 void setCts (PinName _cts);
156159 void setRtsCts (PinName _rts, PinName _cts);
157160 void setHandler (void *handler);
161+
162+ #if ENABLE_RX_BUFFER
163+ public:
164+ // RX Buffer variables - for all CH32 series MCUs (CH32V003, CH32V203, CH32X035, CH32V103, CH32V307)
165+ volatile rx_buffer_index_t _rx_buffer_head;
166+ volatile rx_buffer_index_t _rx_buffer_tail;
167+ unsigned char _rx_buffer[SERIAL_RX_BUFFER_SIZE];
168+ #endif
169+
158170 private:
159171 uint8_t _config;
160172 unsigned long _baud;
@@ -173,16 +185,16 @@ class HardwareSerial : public Stream {
173185#if defined(UART4) || defined(USART4)
174186 extern HardwareSerial Serial4;
175187#endif
176- #if defined(UART5)
188+ #if defined(UART5) || defined(USART5)
177189 extern HardwareSerial Serial5;
178190#endif
179- #if defined(UART6)
191+ #if defined(USART6)
180192 extern HardwareSerial Serial6;
181193#endif
182- #if defined(UART7)
194+ #if defined(UART7) || defined(USART7)
183195 extern HardwareSerial Serial7;
184196#endif
185- #if defined(UART8)
197+ #if defined(UART8) || defined(USART8)
186198 extern HardwareSerial Serial8;
187199#endif
188200
0 commit comments