📄 uart.c
字号:
#include "9315addr.h"
#include "uart.h"
#include "string.h"
#define uart_CtrlHigh 0x60
#define UARTBAUD 1<<29
#define U1EN 1<<18
#define H_BR 0x0
#define L_BR 0xf
#define UARTE 0x11
/************************************/
void __irq IRQ_uart(void)
{
unsigned char pt;
pt = 1;
}
/*************************************
*************初始化*********************
**************************************/
void uart_Interrupt_con(void)
{
VIC1IntSelect = 0x0;
VIC1VectCntl2 = 0x37;
VIC1VectAddr2 = (unsigned int)IRQ_uart;
VIC1IntEnable = UART1RXINTR1;
}
/*********************************/
void enter(void)
{
const char *fmt3;
fmt3="\r\n";
uart_str_send(fmt3,2);
}
/*************************************
*************初始化*********************
**************************************/
void uart_init_start(void)
{
PwrCnt = UARTBAUD;
DeviceCfg = U1EN;
UART1LinCtrlHigh = uart_CtrlHigh;
UART1LinCtrlMid = H_BR;
UART1LinCtrlLow = L_BR;
UART1Ctrl = UARTE;
}
/*************************************
**************单个数据发送*********************
**************************************/
void uart_data_send(unsigned char data)
{
while((UART1Flag&0x8)!=0);
UART1Data = data;
while((UART1Flag&0x8)!=0);
}
/*************************************
***************数组数据发送***********************
**************************************/
void uart_sev_send(unsigned char *sev,unsigned char len)
{
unsigned char i;
for(i=0;i<len;i++)
{
while((UART1Flag&0x8)!=0);
UART1Data = sev[i];
}
enter();
}
/*************************************
****************字符发送**********************
**************************************/
void uart_str_send(const char *str,unsigned char len)
{
unsigned char i;
for(i=0;i<len;i++)
{
while((UART1Flag&0x08)!=0);
UART1Data =str[i];
}
}
/*************************************
***************uart打印函数***********************
**************************************/
void printf(const char *fmt,unsigned int dt)
{
const char *fmt1;
unsigned int ddt;
unsigned char len1,i,t;
unsigned char tdt[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
len1 = strlen(fmt);
if(fmt[0] == '\n')
{
fmt1 = "\r";
uart_str_send(fmt1,1);
}
if((fmt[len1-2]=='%')&&(fmt[len1-1]=='d'))
{
uart_str_send(fmt,len1-2);
uart_data_send(0x20);
uart_data_send(0x30);
uart_data_send(0x78);
ddt =dt;
for(i=0;i<8;i++)
{
t =ddt/0x10000000;
uart_data_send(tdt[t]);
ddt = ddt<<4;
}
uart_data_send(0x20);
}
else
{
uart_str_send(fmt,len1);
//uart_data_send(0x20);
}
if(fmt[len1-1]!='>')
{
enter();
}
}
/*************************************
***************uart接收***********************
**************************************/
unsigned int receive(unsigned char *p)
{
unsigned int rev=0;
unsigned int rev1;
const char *fmt2;
//unsigned char *pd;
loop1:
while((UART1Flag&0x40)==0);
p[rev] = UART1Data;
UART1IntIDIntClr = 0x0;
if(p[rev]!=0x0d)
{
rev = rev+1;
goto loop1;
}
rev1 = rev;
rev = 0;
fmt2="\r\n";
uart_str_send(fmt2,2);
//*pd = p[0];
return rev1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -