static int init_base(uart_t uart, uint32_t baudrate) { /*The base address of the chosen UART */ unsigned long ulBase = g_ulUARTBase[uart]; ROM_SysCtlPeripheralEnable(g_ulUARTPeriph[uart]); switch(uart){ #if UART_0_EN case UART_0: ROM_SysCtlPeripheralEnable(UART_0_PORT); ROM_GPIOPinConfigure(UART_0_RX_PIN); ROM_GPIOPinConfigure(UART_0_TX_PIN); ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); break; #endif #if UART_1_EN case UART_1: ROM_SysCtlPeripheralEnable(UART_1_PORT); ROM_GPIOPinConfigure(UART_1_RX_PIN); ROM_GPIOPinConfigure(UART_1_TX_PIN); ROM_GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1); break; #endif } ROM_UARTDisable(ulBase); ROM_UARTConfigSetExpClk(ulBase,UART_CLK, baudrate, (UART_CONFIG_PAR_NONE | UART_CONFIG_STOP_ONE | UART_CONFIG_WLEN_8)); ROM_UARTEnable(ulBase); return 0; }
/* * closeOptode turns off the Optode (removes power * and disables UART3). */ void closeOptode(void) { //disable UART3 and its interrupt ROM_UARTIntDisable(UART3_BASE, UART_INT_RX); ROM_UARTDisable(UART3_BASE); //turn off power OPTODE_OFF; }
unsigned char Wiz610_get_buf(unsigned char *buf) { unsigned char i; if(!cmd_get) return false; ROM_UARTDisable(WIZ610_UART_BASE); i=0; while(i<g_ulRxBufACount) { *buf++=g_ucRxBuf[i]; i++; } *buf=0; cmd_get=false; i=g_ulRxBufACount; g_ulRxBufACount=0; frab=WIZ_IDLE; return i; }
static int init_base(uart_t uart, uint32_t baudrate) { switch(uart){ #if UART_0_EN case UART_0: ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); ROM_GPIOPinConfigure(GPIO_PA0_U0RX); ROM_GPIOPinConfigure(GPIO_PA1_U0TX); ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); ROM_UARTDisable(UART0_BASE); ROM_UARTConfigSetExpClk(UART0_BASE,ROM_SysCtlClockGet(), baudrate, (UART_CONFIG_PAR_NONE | UART_CONFIG_STOP_ONE | UART_CONFIG_WLEN_8)); ROM_UARTEnable(UART0_BASE); break; #endif } return 0; }
void uart_poweroff(uart_t uart) { /*The base address of the chosen UART */ unsigned long ulBase = g_ulUARTBase[uart]; ROM_UARTDisable(ulBase); }
void wiz610_uart_isr(void) { unsigned long ulStatus; unsigned long ulMode; unsigned char data; ulStatus = ROM_UARTIntStatus(WIZ610_UART_BASE, true); ROM_UARTIntClear(WIZ610_UART_BASE, ulStatus); if(cmd_modbus_switch) { // ������ � ������� � ��������� ������ if(ulStatus==UART_INT_RX) { g_Wiz610_fRX=true; cmd_get=false; while(!(HWREG(WIZ610_UART_BASE + UART_O_FR) & UART_FR_RXFE)) { data=HWREG(WIZ610_UART_BASE+UART_O_DR); if(frab==WIZ_IDLE) { if(data=='<') frab=WIZ_START; if(data=='>') frab=WIZ_STOP; cmd_get=false; } else { if(frab==WIZ_START) { if(data=='>') frab=WIZ_STOP; else { g_ucRxBuf[g_ulRxBufACount]=data; g_ulRxBufACount=(g_ulRxBufACount+1)&0x7f; } } } if(frab==WIZ_STOP) { ROM_UARTDisable(WIZ610_UART_BASE); cmd_get=true; } } } } else { // ������ � ������ ������ if(ulStatus==UART_INT_TX) { g_ulRxBufACount=0; } if(ulStatus==UART_INT_RX) { if(modbus_tcp_rab==MODBUS_TCP_IDLE) { g_ulRxBufACount=0; modbus_tcp_rab=MODBUS_TCP_RCV; xMBPortEventPost(EV_READY); } while(!(HWREG(WIZ610_UART_BASE + UART_O_FR) & UART_FR_RXFE)) { data=HWREG(WIZ610_UART_BASE+UART_O_DR); g_ucRxBuf[g_ulRxBufACount]=data; g_ulRxBufACount=(g_ulRxBufACount+1)&0x7f; } if(g_ulRxBufACount==WIZ_MB_TCP_UID) { len_data=g_ucRxBuf[4]<<8; len_data|=g_ucRxBuf[5]; len_data=g_ulRxBufACount+len_data; } if(g_ulRxBufACount==len_data) { xMBPortEventPost(EV_FRAME_RECEIVED); } } } }
void uart_poweroff(uart_t uart) { ROM_UARTDisable(UART0_BASE); }