📄 uart.c
字号:
#ifndef _Include
#include "Include.h"
#endif
/****************************************************************************
* 名称:UART0Init()
* 功能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为9600
****************************************************************************/
void UART0Init(int baud)
{
unsigned int Fdiv;
PINSEL0=PINSEL0|0x00000005;
U0LCR = 0x83; // DLAB = 1,可设置波特率
Fdiv = (Fpclk / 16) / baud; // 设置波特率
U0DLL= Fdiv % 256; //波特率设置
U0DLM= Fdiv / 256; //设置为8位数据位,1位停止位,无奇偶校验
U0LCR = 0x03; // DLAB = 0
U0FCR = 0x00; //FIFO控制寄存器
U0IER = 0x01; //中断使能
/* 设置串行口0中断IRQ */
VICVectAddr2 = (unsigned int)IRQ_UART0_Receive;
VICVectCntl2 = (0x20 | VIC_UART0);
VICIntEnable |= INT_UART0; // 中断使能 串行口0
}
/****************************************************************************
* 名称:UART0_SendByte()
* 功能:向串口发送字节数据,并等待发送完毕。
* 入口参数:data 要发送的数据
* 出口参数:无
****************************************************************************/
void UART0_SendByte(unsigned char data)
{
U0THR = data; // 发送数据
while( (U0LSR&0x40)==0 ); // 等待数据发送完毕
}
/****************************************************************************
* 名称:UART0_SendStr()
* 功能:向串口发送一字符串
* 入口参数:srt 要发送的字符串的指针
* 出口参数:无
****************************************************************************/
void UART0_SendStr(unsigned char const *str)
{
while(1)
{
if( *str == '\0' ) break;
UART0_SendByte(*str++); // 发送数据
}
}
/****************************************************************************
* 名称:UART0_Receive()
* 功能:串口UART0接收
* 入口参数:无
* 出口参数:无
****************************************************************************/
unsigned char UART0_Receive(void)
{
if( (U0IIR&0x0F)==0x04 ) return U0RBR; else return 0x00; // 判断中断标志位,以确定是否为接收中断
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -