📄 uart_driver.h
字号:
/**--------------File Info-------------------------------------------------------------------------------
** File Name: config.h
** Last modified Date: 2004-09-17
** Last Version: 1.0
** Descriptions: User Configurable File
**
**------------------------------------------------------------------------------------------------------
** Created By: Chenmingji
** Created date: 2004-09-17
** Version: 1.0
** Descriptions: First version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#ifndef __UART_DRIVER_H
#define __UART_DRIVER_H
# define UART_BPS 9600
volatile uint8 uiGRcvNew; /* 串口接收新数据的标志 */
uint8 uiGRcvBuf[30] = {0}; /* 串口接收数据缓冲区 */
uint32 uiGNum; /* 串口接收数据的个数 */
void __irq UART0_IRQ (void)
{
uiGNum = 0;
int_flag=1;
int_type=2;
while ((U0IIR & 0x01) == 0){ /* 判断是否有中断挂起 */
switch (U0IIR & 0x0E){ /* 判断中断标志 */
case 0x04: /* 接收数据中断 */
uiGRcvNew = 1; /* 置接收新数据标志 */
for (uiGNum = 0; uiGNum < 8; uiGNum++){ /* 连续接收8个字节 */
uiGRcvBuf[uiGNum] = U0RBR;
}
break;
case 0x0C: /* 字符超时中断 */
uiGRcvNew = 1;
while ((U0LSR & 0x01) == 0x01){ /* 判断数据是否接收完毕 */
uiGRcvBuf[uiGNum] = U0RBR;
uiGNum++;
}
break;
default:
break;
}
}
VICVectAddr = 0x00;
}
void UARTInit (void)
{
uint16 uiFdiv;
U0LCR = 0x83; /* 允许设置波特率 */
uiFdiv = (Fpclk / 16) / UART_BPS; /* 设置波特率*/
U0DLM = uiFdiv / 256;
U0DLL = uiFdiv % 256;
U0LCR = 0x03; /* 锁定波特率 */
}
void UART0SendByte (uint8 uiDat)
{
U0THR = uiDat; /* 写入数据 */
while ((U0LSR & 0x20) == 0); /* 等待数据发送完毕 */
}
#endif
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -