?? 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 + -