📄 uart1.c
字号:
/****************************************Copyright (c)*******************************/
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#define __SRC
#include"UART1.h"
#undef __SRC
#define UART_BPS 9600 //定义串口的波特率
uint32 Uart1_Flag;
uint32 Uart1_Data_Buffer[32];
/******************************************************************************************************
**函数名称:Uart_Init(void)
**入口参数:无
**出口参数:无
**函数功能:初始化串口:波特率:115200 1位停止位,无校验位
********************************************************************************************************/
void Uart1_Init (void)
{
uint32 Fdiv; //设置串口的除数
PINSEL0 = (PINSEL0&0xFFF0FFFF)|0x00050000;
U1LCR = 0x83; //使能除数锁存器
Fdiv = (Fpclk/16)/UART_BPS;
U1DLM = Fdiv/256;
U1DLL = Fdiv%256;
U1LCR = 0x03;
U1FCR = 0x81; //使能8字节除非的接收FIFO;
U1IER = 0x07; //使能RDA,THRE,Rx线状态中断。
return;
}
/******************************************************************************************************
**函数名称:__irq Uart_Int(void)
**入口参数:无
**出口参数:无
**函数功能:中断服务程序
********************************************************************************************************/
void IRQ_Uart1(void)
{
uint8 i;
uint32 bak;
bak = VICIntEnable;
VICIntEnClr = 1 << 7;
VICVectAddr = 0x00;
IRQEnable();
i = U1IIR;
switch(i)
{
case 0xC2:
//Uart1_Transport_Int(); //发送中断
break;
case 0xC4:
//Uart1_Recive(Uart1_Data_Buffer); //接收数据可用,FIFO满触发
i =i;
break;
case 0xC6:
//ERR = 0x1; //线状态错误
break;
case 0xCC:
//Uart1_Recive_Timeout(Uart1_Data_Buffer); //字符超时中断
break;
}
VICIntEnable = bak;
}
/******************************************************************************************************
**函数名称:Uart_Transport()
**入口参数:无
**出口参数:无
**函数功能:发送中断服务程序
********************************************************************************************************/
uint32 Uart1_Transport(uint8 * p )
{
/*
uint32 j;
for(j=0;j<8;j++)
{
U1THR = *i;
i++;
}
*/
return 0;
}
/******************************************************************************************************
**函数名称:Uart_Transport_irq()
**入口参数:无
**出口参数:无
**函数功能:发送中断服务程序
********************************************************************************************************/
uint32 Uart1_Transport_Int(void)
{
uint32 Flag;
Flag = 1;
return(Flag);
}
/******************************************************************************************************
**函数名称:Uart_Recive_Timeout()
**入口参数:无
**出口参数:无
**函数功能:接收中断服务程序
********************************************************************************************************/
void Uart1_Recive_Timeout(uint8 * p)
{
/* uint32 i;
i = 0x0;
//for(i=0;i<8;i++) //先清空接收缓存区
//{
// DataBuffer[i] = 0x0;
//}
//for(i=0;i<8;i++)
//{
DataBuffer[0] = U1RBR;
//}
Uart1_Flag = 0x01;
return;*/
}
/******************************************************************************************************
**函数名称:Uart_Recive()
**入口参数:无
**出口参数:无
**函数功能:接收中断服务程序
********************************************************************************************************/
uint32 Uart1_Recive(uint8 * p )
{
/*
uint32 i;
for(i=0;i<8;i++)
{
DataBuff[i] = U1RBR;
}
Uart1_Flag = 0x02;
return(Uart1_Flag);
*/
}
/****************************************************************************
* 名称:UART0_SendStr()
* 功能:向串口发送一字符串
* 入口参数:srt 要发送的字符串的指针
* 出口参数:无
****************************************************************************/
void UART1_SendStr(uint8 const *str)
{ while(1)
{ if( *str == '\0' ) break;
UART1_SendByte(*str++); // 发送数据
}
}
/****************************************************************************
* 名称:UART0_SendByte()
* 功能:向串口发送字节数据,并等待发送完毕。
* 入口参数:data 要发送的数据
* 出口参数:无
****************************************************************************/
void UART1_SendByte(uint8 data)
{
U1THR = data; // 发送数据
while( (U1LSR&0x40)==0 ); // 等待数据发送完毕
}
/*********************************************************************************************************
** End Of File
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -