58 #define __UART_CODE_TEST__ 0
60 #if __UART_CODE_TEST__
61 #define __USE_UART__ 1
62 #define __USE_UART_PORT1A__ 1
63 #define __USE_UART_PORT1B__ 1
64 #define __USE_UART_PORT2A__ 1
65 #define __USE_UART_PORT2B__ 1
66 #define __USE_UART_PORT3A__ 1
67 #define __USE_UART_PORT3B__ 1
83 #define UART_PORT_INIT_XA(XX, YY, ZZ) \
85 pic32_uart##XX##A_init(uint32_t baudrate, uint16_t byte_format) \
88 IEC##ZZ##CLR = _IEC##ZZ##_U##XX##AEIE_MASK | _IEC##ZZ##_U##XX##ATXIE_MASK | _IEC##ZZ##_U##XX##ARXIE_MASK; \
89 IFS##ZZ##CLR = _IFS##ZZ##_U##XX##AEIF_MASK | _IFS##ZZ##_U##XX##ATXIF_MASK | _IFS##ZZ##_U##XX##ARXIF_MASK; \
92 IPC##YY##CLR = _IPC##YY##_U##XX##AIP_MASK | _IPC##YY##_U##XX##AIS_MASK; \
93 IPC##YY##SET = (6 << _IPC##YY##_U##XX##AIP_POSITION) | (0 << _IPC##YY##_U##XX##AIS_POSITION); \
99 U##XX##AMODESET = _U##XX##AMODE_BRGH_MASK; \
100 U##XX##ABRG = pic32_clock_calculate_brg(4, baudrate); \
102 U##XX##AMODESET = byte_format & 0x07; \
106 U##XX##ASTASET = _U##XX##ASTA_URXEN_MASK | _U##XX##ASTA_UTXEN_MASK; \
108 IEC##ZZ##SET = _IEC##ZZ##_U##XX##ARXIE_MASK; \
111 U##XX##AMODESET = _U##XX##AMODE_UARTEN_MASK; \
113 return UART_NO_ERROR; \
116 #define UART_PORT_INIT_XB(XX, YY, ZZ) \
118 pic32_uart##XX##B_init(uint32_t baudrate, uint16_t byte_format) \
121 IEC##ZZ##CLR = _IEC##ZZ##_U##XX##BEIE_MASK | _IEC##ZZ##_U##XX##BTXIE_MASK | _IEC##ZZ##_U##XX##BRXIE_MASK; \
122 IFS##ZZ##CLR = _IFS##ZZ##_U##XX##BEIF_MASK | _IFS##ZZ##_U##XX##BTXIF_MASK | _IFS##ZZ##_U##XX##BRXIF_MASK; \
125 IPC##YY##CLR = _IPC##YY##_U##XX##BIP_MASK | _IPC##YY##_U##XX##BIS_MASK; \
126 IPC##YY##SET = (6 << _IPC##YY##_U##XX##BIP_POSITION) | (0 << _IPC##YY##_U##XX##BIS_POSITION); \
132 U##XX##BMODESET = _U##XX##BMODE_BRGH_MASK; \
133 U##XX##BBRG = pic32_clock_calculate_brg(4, baudrate); \
135 U##XX##BMODESET = byte_format & 0x07; \
139 U##XX##BSTASET = _U##XX##BSTA_URXEN_MASK | _U##XX##BSTA_UTXEN_MASK; \
141 IEC##ZZ##SET = _IEC##ZZ##_U##XX##BRXIE_MASK; \
144 U##XX##BMODESET = _U##XX##BMODE_UARTEN_MASK; \
146 return UART_NO_ERROR; \
149 #define UART_PORT(XX, YY) \
152 pic32_uart##XX##_write(uint8_t data) \
154 volatile uint8_t wait; \
157 wait = U##XX##STAbits.UTXBF; \
160 U##XX##TXREG = data; \
162 return UART_NO_ERROR; \
166 #ifdef __USE_UART_PORT1A__
168 UART_PORT_INIT_XA(1, 6, 0)
171 #ifdef __USE_UART_PORT1B__
173 UART_PORT_INIT_XB(1, 12, 2)
176 #ifdef __USE_UART_PORT2A__
178 UART_PORT_INIT_XA(2, 7, 1)
181 #ifdef __USE_UART_PORT2B__
183 UART_PORT_INIT_XB(2, 12, 2)
186 #ifdef __USE_UART_PORT3A__
188 UART_PORT_INIT_XA(3, 8, 1)
191 #ifdef __USE_UART_PORT3B__
193 UART_PORT_INIT_XB(3, 12, 2)
UART Interface for PIC32MX (pic32mx795f512l)
INTERRUPT interface for PIC32MX (pic32mx795f512l)
CLOCK interface for PIC32MX (pic32mx795f512l)