/* ----------------------------------------------------- v003_serial.h Header fuer rudimentaere UART-Funktionen erweitert um Stream-Vererbung MCU : CH32V003 Takt : 48 MHz 30.11.2025 R. Seelig ------------------------------------------------------ */ #ifndef in_v003serial #define in_v003serial #include #include "Arduino.h" class V003serial : public Stream { #define FUNCONF_SYSTEM_CORE_CLOCK 48000000l #define GPIO_CNF_OUT_PP_AF 8 #define GPIO_CNF_IN_PUPD 8 #define CTLR1_UE_Set ((uint16_t)0x2000) // USART enable mask public: V003serial(); void begin(uint32_t brate); void putchar(uint8_t ch); uint8_t getchar(void); uint8_t ischar(void); void prints(char *txbuf); void printint(int i, char komma); void readline(char *txbuffer, int maxlen); void readln(char *txbuffer, int maxlen); void printhex(uint16_t h, char out16); // Stream Methoden int available() override; int read() override; int peek() override; size_t write(uint8_t) override; char *lineinput(char *string, uint8_t mode, char anz); int readint(uint8_t anz); int readhex(uint8_t anz); private: uint32_t baudrate; void locase(char *str); void hexnibbleout(uint8_t b); char *strfindch(const char *str, char ch); char upperch(char ch); void strdelch(char *ptrstr, int pos); void strhicase(char *ptrstr); int my_pow10(unsigned int x); int my_atoi(char *str); int my_ahtoi(char *str); }; #endif