Skip to content

Commit 068928a

Browse files
authored
Update HardwareSerial.h
1 parent cbc7646 commit 068928a

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

cores/arduino/HardwareSerial.h

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
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

102107
class 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

Comments
 (0)