📄 serial.c
字号:
// Copyright(c) 2001-2002 Hybus Co,.ltd. All rights reserved.
//
// Module name:
// serial.c
//
// Description:
//
//
//
// Author:
// bedguy
//
// Created:
// 2002.10
//
////////////////////////////////////////////////////////////////////////////////
#include "serial.h"
void SerialInit(ulong baud){
// GP39, GP40, GP41阑 UART(10)肺 荤侩茄促.
// GAFR1_L |= 0x000A8000;
// GPDR1 |= 0x00000380;
GPDR1 = 0x80;///////GPIO Pin Direction Register GPIO<63:32>
GAFR1_L = 0x8010;////GPIO Alternate Function Select Register GPIO<47:32>
// 8-bit, 1 stop, no parity 技泼.
FFLCR = 0x00000003;//Line Control Register (read/write)
// Reset tx, rx FIFO. clear. FIFO enable
FFFCR = 0x00000007;///FIFO Control Register (write only)
FFIER = 0x00000040;///Interrupt Enable Register(read /write)
// DLAB set=latch registers, DLAB clear=老馆 器飘.
FFLCR |= 0x00000080;///Line Control Register (read/write)
// baud rate 汲沥.
FFDLL = baud;////Divisor Latch low Register(DLAB=1)(Read /Write)
///FFDLH = baud;////Divisor Latch low Register(DLAB=1)(Read /Write)
// DLAB clear, 老馆 器飘肺 傈券.
FFLCR &= 0xFFFFFF7F;
// Transmit Shift Register, Transmit Holding Register, FIFO俊
// UART Enable Interrupt
// 单捞鸥啊 绝阑锭鳖瘤 扁促赴促.
while(! FFLSR & 0x00000040 );//FFLSR --- Line Status Register(read/write)
return;
}
void SerialOutputByte(const char c){
// FIFO俊 单捞鸥啊 绝阑锭鳖瘤 扁促赴促.
while ((FFLSR & 0x00000020) == 0 );////FFLSR----Line Status Register(read/write)
FFTHR = ((ulong)c & 0xFF); ///FFTHR---Transmit Holding Register(write only)
// c=='\n'捞搁, 角力肺绰 "\n\r"阑 免仿.
if (c=='\n') SerialOutputByte('\r');
}
void SerialOutputString(char * str)
{
int i=0;
while(*(str+i)!='\0')
{
SerialOutputByte(*(str+i));
i++;
}
}
int SerialInputByte(char *c){
// FIFO俊 单捞鸥啊 乐阑锭.//////////FFLSR line status register (read only)
if((FFLSR & 0x00000001)==0){
return 0;
} else {
(volatile char)*c = FFRBR;////FFRBR receive buffer register(read only)
return 1;
}
}
//////////////////////////////////
uint ReceiveFile(void)
{
////char * string1 = "\n\nThis is my first embody program!\nPlease send file.....\n\n";
/// SerialOutputString(string1);
////void SerialOutputString(char * str)
/*
uint8 UART0_GetByte(void)
{
while((U0LSR & 0x01)==0x00);
return (U0RBR);
}
*/
///SerialGetByte(byte);
/// char *byte;
///SerialInputByte(byte);
uint buffer[4]={0,0,0,0},i;
uint BufferX=0;
for(i=0;i<4;i++)
{
while((FFLSR & 0x01)==0x00);///如果最低是零的话就等待.......
// return FFRBR;
buffer[i]=FFRBR;
}
///注意buffer[0]放在低地址
////buffer[4]放在高地址
BufferX=BufferX|buffer[3];
BufferX=(BufferX<<8)|buffer[2];
BufferX=(BufferX<<8)|buffer[1];
BufferX=(BufferX<<8)|buffer[0];
return BufferX;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -