📄 uart.c
字号:
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include "includes.h"
/******************************************************************************
* @fn initUART
*
* @brief Initialize the UART
*
* @param none
*
* @return none
*****************************************************************************/
void initUART(void)
{
#if UART_PORT == 0
IO_PER_LOC_UART0_AT_PORT0_PIN2345();
UART_SETUP(0, 115200, HIGH_STOP);
INT_SETFLAG(INUM_UTX0, INT_SET);
#else
IO_PER_LOC_UART1_AT_PORT1_PIN4567();
UART_SETUP(1, 115200, HIGH_STOP);
INT_SETFLAG(INUM_UTX1, INT_SET);
#endif
}
/******************************************************************************
* @fn getUART
*
* @brief Initialize the UART
*
* @param none
*
* @return get char
*****************************************************************************/
char getUART (void)
{
char c;
byte status;
#if UART_PORT == 0
// Turning on reception
status = U0CSR;
U0CSR |= UART_ENABLE_RECEIVE;
while (!INT_GETFLAG(INUM_URX0));
c = U0DBUF;
INT_SETFLAG(INUM_URX0, INT_CLR);
// Restoring old state
U0CSR = status;
#else
// Turning on reception
status = U1CSR;
U1CSR |= 0x40;
while (!INT_GETFLAG(INUM_URX1));
c = U1DBUF;
INT_SETFLAG(INUM_URX1, INT_CLR);
// Restoring old state
U1CSR = status;
#endif
return c;
}
/******************************************************************************
* @fn getchar
*
* @brief Initialize the UART
*
* @param none
*
* @return none
*****************************************************************************/
int putchar (int c)
{
if (c == '\n')
#if UART_PORT == 0
{
while (!INT_GETFLAG(INUM_UTX0));
INT_SETFLAG(INUM_UTX0, INT_CLR);
U0DBUF = 0x0d; /* output CR */
}
while (!INT_GETFLAG(INUM_UTX0));
INT_SETFLAG(INUM_UTX0, INT_CLR);
return (U0DBUF = c);
#else
{
while (!INT_GETFLAG(INUM_UTX1));
INT_SETFLAG(INUM_UTX1, INT_CLR);
U1DBUF = 0x0d; /* output CR */
}
while (!INT_GETFLAG(INUM_UTX1));
INT_SETFLAG(UTX1IF, INT_CLR);
return (U1DBUF = c);
#endif
}
/*------------------------------------------------------------------------------
0ooo
ooo0 ( )
( ) ) /
\ ( (_/
\_) By:cuiqingwei [gary]
------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -