#include "STC8Axx.h"
#include "Uart1.h"
#include "Sys.h"
#include <intrins.h>
#include <stdio.h> //用于printf
#include <stdarg.h> //用于vsprintf函数原型
bit bUart1Busy;
bit bUart1ReceiveFinish = 0; //串口1接收完成标志 (1: 表示是 0: 表示否)
bit bIsUart1ReceiveCommandHead = 0; //是否接收到命令头 (1: 表示是 0: 表示否)
unsigned char Uart1CurrentReceiveLength = 0; //串口1当前接收数据的长度
unsigned char Uart1ReceiveDataBuf[kUart1ReceiveMaxLength]; //串口1接收到的数据[串口1接收数据最大长度]
unsigned char Uart1SendDataBuf[kUart1SendMaxLength]={0xAA,0x00,0x00,0xBB}; //串口1发送数据[串口1接收数据最大长度]
//------------------------------------------------------------------------------
//读取串口1中断处理数据(字符串)(判断命令头,命令尾)
//------------------------------------------------------------------------------
void Uart1_ReadInterruptDataManage()
{
Sys_CheckIAP(SBUF); //系统_检测是否需要进入下载模式
if(bIsUart1ReceiveCommandHead == 0) //是否接收到命令头 (1: 表示是 0: 表示否)
{
if(SBUF == 0xCC)
{
bIsUart1ReceiveCommandHead = 1; //是否接收到命令头 (1: 表示是 0: 表示否)
Uart1CurrentReceiveLength = 0; ///串口1当前接收数据的长度
Uart1ReceiveDataBuf[Uart1CurrentReceiveLength] = SBUF; //串口1接收到的数据[串口1当前接收数据的长度]
Uart1CurrentReceiveLength ++; //串口1当前接收数据的长度
}
}
else
{
Uart1ReceiveDataBuf[Uart1CurrentReceiveLength] = SBUF; //串口1接收到的数据[串口1当前接收数据的长度]
Uart1CurrentReceiveLength ++; //串口1当前接收数据的长度
if(SBUF == 0xDD)
{
bIsUart1ReceiveCommandHead = 0; //是否接收到命令头 (1: 表示是 0: 表示否)
bUart1ReceiveFinish = 1; //串口1接收完成标志 (1: 表示是 0: 表示否)
}
if(Uart1CurrentReceiveLength >= kUart1ReceiveMa
STC单片机使用Printf
于 2021-09-25 17:26:53 首次发布
本文介绍了如何在STC单片机上使用Printf函数进行串口通信和调试,包括输出字符、整数和长整型数据的格式化方法。
摘要由CSDN通过智能技术生成