📄 uart0print.c
字号:
/*
*********************************************************************************************************
* 文件: Uart0Print.C.
* 描述: 串口输出函数.
* 编写: bobey
*********************************************************************************************************
*/
#include <stdarg.h>
#include <stdio.h>
#include "Includes.H"
void Wr_Uart0_Buf (INT8U data);
void StartSend (void);
/*
********************************************************************************************************
* 函数: void Uart0Print (const char *format, ...).
* 描述: 非规定参数输出函数, 与系统的 printf 相应.
********************************************************************************************************
*/
void Uart0Print (const char *format, ...)
{
#define MAX_TBUF 100 // 注意: 只允许接收改大小的字符串.
char tbuf[MAX_TBUF] = {0, };
va_list v_list;
char *ptr;
INT8U err;
OSSemPend (Uart0.Sem, 0, &err);
va_start(v_list, format); // Initialize variable arguments.
vsprintf(tbuf, format, v_list );
va_end(v_list);
ptr= tbuf;
while(*ptr != '\0') {
Wr_Uart0_Buf(*ptr++);
}
StartSend ();
OSSemPost (Uart0.Sem);
#undef MAX_TBUF
}
/*
********************************************************************************************************
* 函数: void StartSend (void).
* 描述: 判断是否启动发送.
********************************************************************************************************
*/
void StartSend (void)
{
if (rUTRSTAT0 & (1<<2)) { // 启动发送.
if (Uart0.Rd != Uart0.Wr) {
rUTXH0 = Uart0.Buffer[Uart0.Rd++];
if (Uart0.Rd >= Uart0BufSize)
Uart0.Rd = 0x00;
}
}
}
/*
********************************************************************************************************
* 函数: void Wr_Uart0_Buf (INT8U data).
* 描述: 将数据写入发送缓冲区.
********************************************************************************************************
*/
void Wr_Uart0_Buf (INT8U data)
{
Uart0.Buffer[Uart0.Wr++] = data;
if (Uart0.Wr >= Uart0BufSize) {
Uart0.Wr = 0x00;
}
}
/*
********************************************************************************************************
* End.
********************************************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -