/*lint -save -e970 Disable MISRA rule (6.3) checking. */ int main(void) /*lint -restore Enable MISRA rule (6.3) checking. */ { /* Write your local variable definition here */ /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/ PE_low_level_init(); /*** End of Processor Expert internal initialization. ***/ /* Write your code here */ /* For example: for(;;) { } */ byte c, err; for (;;) { do { err = UART_RecvChar(&c); } while(err != ERR_OK); sendString("Press R, G or B to toggle the red, green or blue LEDs.\r\nPress ESC to close.\r\n"); do { do { err = UART_RecvChar(&c); } while(err != ERR_OK); if (c == 0x52 || c == 0x72) { Red_NegVal(); sendString("Toggle red.\r\n"); } else if (c == 0x47 || c == 0x67) { Green_NegVal(); sendString("Toggle green.\r\n"); } else if (c == 0x42 || c == 0x62) { Blue_NegVal(); sendString("Toggle blue.\r\n"); } } while(c != 0x1B); sendString("Press any key to start.\r\n"); Red_SetVal(); Green_SetVal(); Blue_SetVal(); } /*** Don't write any code pass this line, or it will be deleted during code generation. ***/ /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/ #ifdef PEX_RTOS_START PEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */ #endif /*** End of RTOS startup code. ***/ /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/ for(;;){} /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
/* ** =================================================================== ** Method : UART_RecvBlock (component AsynchroSerial) ** Description : ** If any data is received, this method returns the block of ** the data and its length (and incidental error), otherwise it ** returns an error code (it does not wait for data). ** This method is available only if non-zero length of the ** input buffer is defined and the receiver property is enabled. ** If less than requested number of characters is received only ** the available data is copied from the receive buffer to the ** user specified destination. The value ERR_EXEMPTY is ** returned and the value of variable pointed by the Rcv ** parameter is set to the number of received characters. ** Parameters : ** NAME - DESCRIPTION ** * Ptr - Pointer to the block of received data ** Size - Size of the block ** * Rcv - Pointer to real number of the received data ** Returns : ** --- - Error code, possible codes: ** ERR_OK - OK ** ERR_SPEED - This device does not work in ** the active speed mode ** ERR_RXEMPTY - The receive buffer didn't ** contain the requested number of data. Only ** available data has been returned. ** ERR_COMMON - common error occurred (the ** GetError method can be used for error ** specification) ** =================================================================== */ byte UART_RecvBlock(UART_TComData *Ptr, word Size, word *Rcv) { register word count; /* Number of received chars */ register byte result = ERR_OK; /* Last error */ for (count = 0x00U; count < Size; count++) { switch (UART_RecvChar(Ptr++)) { /* Receive data and test the return value*/ case ERR_RXEMPTY: /* No data in the buffer */ if (result == ERR_OK) { /* If no receiver error reported */ result = ERR_RXEMPTY; /* Return info that requested number of data is not available */ } *Rcv = count; /* Return number of received chars */ return result; case ERR_COMMON: /* Receiver error reported */ result = ERR_COMMON; /* Return info that an error was detected */ break; default: break; } } *Rcv = count; /* Return number of received chars */ return result; /* OK */ }