Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void UART1Inint(unsigned long int baudRate) {
- ANSELDCLR = 0xFFFF;
- CFGCONbits.IOLOCK = 0; // PPS Unlock
- RPD11Rbits.RPD11R = 3; // Assign RPD11 as U1TX
- U1RXRbits.U1RXR = 3; // Assign RPD10 as U1RX
- CFGCONbits.IOLOCK = 1; // PPS Lock
- // Baud related stuffs.
- U1MODEbits.BRGH = 1; // Setup High baud rates.
- unsigned long int baudRateDivider = ((GetSystemClock()/(4*baudRate))-1);
- U1BRG = baudRateDivider; // set BRG
- // UART Configuration
- U1MODEbits.ON = 1; // UART1 module is Enabled
- U1STAbits.UTXEN = 1; // TX is enabled
- U1STAbits.URXEN = 1; // RX is enabled
- // UART Rx interrupt configuration.
- IFS1bits.U1RXIF = 0; // Clear the interrupt flag
- IFS1bits.U1TXIF = 0; // Clear the interrupt flag
- INTCONbits.MVEC = 1; // Multi vector interrupts.
- IEC1bits.U1RXIE = 1; // Rx interrupt enable
- IEC1bits.U1EIE = 1;
- IPC7bits.U1IP = 7; // Rx Interrurpt priority level
- IPC7bits.U1IS = 3; // Rx Interrurpt sub priority level
- }
- void __attribute__((vector(_UART_1_VECTOR), interrupt(IPL7SRS), nomips16)) UART1_ISR(void)
- {
- PORTAbits.RA4 = 1; // LED to indicate the ISR.
- char curChar = U1RXREG;
- U1TXREG=curChar; // Echo back the same character.
- while(!U1STAbits.TRMT);
- IFS1bits.U1RXIF = 0; // Clear the interrupt flag!
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement