📄 uart.c
字号:
rGPHUP |= __COM1_GPIO; /* 不使用上拉电阻 */
rCLKCON |= __COM1_CLKBIT; /* 时钟挂接 */
rUCON1 = 0;
rUFCON1 = uiUFCONn;
rUMCON1 = 0; /* 关闭流控 */
rULCON1 = uiULCONn;
rUCON1 = uiUCONn;
rUBRDIV1 = uiUBRDIVn;
if (uiInterEn) { /* 链接中断服务函数 */
HandleUART0 = (int)pvIsrRoutine;
/* changed by lixintian 2008.4.2 */
// vicIrqSet(VIC_CHANNEL_UART1, VIC_CHANNEL_UART1,
// (unsigned long)pvIsrRoutine); /* 允许中断 */
INTER_CLR_SUBMSK(BIT_SUB_RXD1); /* 打开接收中断 */
}
} else if (iCom == COM2) { /* 设置 UART2 的 管脚 */
rGPHCON &= ~(__COM2_MASK);
rGPHCON |= __COM2_GPHCON;
rGPHUP |= __COM2_GPIO; /* 不使用上拉电阻 */
rCLKCON |= __COM2_CLKBIT; /* 时钟挂接 */
rUCON2 = 0;
rUFCON2 = uiUFCONn;
rUMCON2 = 0; /* 关闭流控 */
rULCON2 = uiULCONn;
rUCON2 = uiUCONn;
rUBRDIV2 = uiUBRDIVn;
if (uiInterEn) { /* 链接中断服务函数 */
HandleUART0 = (int)pvIsrRoutine;
/* changed by lixintian 2008.4.2 */
// vicIrqSet(VIC_CHANNEL_UART2, VIC_CHANNEL_UART2,
// (unsigned long)pvIsrRoutine); /* 允许中断 */
INTER_CLR_SUBMSK(BIT_SUB_RXD2); /* 打开接收中断 */
}
} else { /* 串口出错 */
return (-1);
}
return (0);
}
/*********************************************************************************************************
** Function name: uartSendByte
** Descriptions: UART 发送一个字节的数据
** input parameters: iCom 串口号
** ucData 数据
** output parameters: NONE
** Returned value: 正确返回 0, 错误返回 -1
** Created by: Hanhui
** Created Date: 2007/09/18
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int uartSendByte (int iCom, unsigned char ucData)
{
switch (iCom) {
case COM0:
while (rUFSTAT0 & (1 << 14)); /* Tx_FIFO NOT FULL */
WrUTXH0(ucData);
break;
case COM1:
while (rUFSTAT1 & (1 << 14)); /* Tx_FIFO NOT FULL */
WrUTXH1(ucData);
break;
case COM2:
while (rUFSTAT2 & (1 << 14)); /* Tx_FIFO NOT FULL */
WrUTXH2(ucData);
break;
default: /* 串口号错误 */
return (1);
}
return (0);
}
/*********************************************************************************************************
** Function name: uartSendByteCnt
** Descriptions: UART 发送指定长度的数据
** input parameters: iCom 串口号
** pucData 数据缓冲区
** output parameters: NONE
** Returned value: NONE
** Created by: Hanhui
** Created Date: 2007/09/18
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void uartSendByteCnt (int iCom,
unsigned char *pucData,
int iCnt)
{
for (; iCnt != 0; iCnt--) {
uartSendByte(iCom, *pucData); /* 发送数据 */
pucData++;
}
}
/*********************************************************************************************************
** Function name: uartSendString
** Descriptions: UART 发送一个字符串
** input parameters: iCom 串口号
** pcData 字符串
** output parameters: NONE
** Returned value: NONE
** Created by: Hanhui
** Created Date: 2007/09/18
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void uartSendString (int iCom, char *pcData)
{
if (!pcData) { /* 指针为空 */
return;
}
while (*pcData != '\0') { /* 发送字符串 */
uartSendByte(iCom, (unsigned char)*pcData);
pcData++;
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -