getsuart2.c
来自「Microchip的官方PIC24H系列16位单片机的外设源程序库。」· C语言 代码 · 共 51 行
C
51 行
#include<uart.h>
#include<p30fxxxx.h>
/* UART2 is defined in following devices */
#if defined(__dsPIC30F3011__) || defined(__dsPIC30F4011__) || defined(__dsPIC30F6010__) || \
defined(__dsPIC30F3013__) || defined(__dsPIC30F3014__) || defined(__dsPIC30F5011__) || \
defined(__dsPIC30F6011__) || defined(__dsPIC30F6012__) || defined(__dsPIC30F5013__) || \
defined(__dsPIC30F6013__) || defined(__dsPIC30F6014__) || defined(__dsPIC30F4013__)
/****************************************************************************
* Function Name : getsUART2
* Description : This function gets a string of data of specified length
* if available in the UxRXREG buffer into the buffer
* specified.
* Parameters : unsigned int length the length expected
* unsigned int *buffer the received data to be
* recorded to this array
* unsigned int uart_data_wait timeout value
* Return Value : unsigned int number of data bytes yet to be received
*************************************************************************/
unsigned int getsUART2(unsigned int length,unsigned int *buffer,
unsigned int uart_data_wait)
{
int wait = 0;
char *temp_ptr = (char *) buffer;
while(length) /* read till length is 0 */
{
while(!DataRdyUART2())
{
if(wait < uart_data_wait)
wait++ ; /*wait for more data */
else
return(length); /*Time out- Return words/bytes to be read */
}
wait=0;
if(U2MODEbits.PDSEL == 3) /* check if TX/RX is 8bits or 9bits */
*buffer++ = U2RXREG; /* data word from HW buffer to SW buffer */
else
*temp_ptr++ = U2RXREG & 0xFF; /* data byte from HW buffer to SW buffer */
length--;
}
return(length); /* number of data yet to be received i.e.,0 */
}
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?