UART串口常用库函数(STC8系列)

UART串口常用库函数(STC8系列)

STC8系列单片机通常使用标准库或自定义库操作UART串口。以下是常见的库函数及其功能说明:


头文件

c 复制代码
#include "UART.h"
#include "NVIC.h"
#include "Switch.h"

初始化函数
UART_Init():配置串口工作模式、波特率等参数。

  • 参数:波特率(如115200 )、数据位(8位)、停止位(1位)、校验位(无)。
  • 示例代码: UART1以此类推的修改
c 复制代码
void UART_config(void) {
	// >>> 记得添加 NVIC.c, UART.c, UART_Isr.c <<<
    COMx_InitDefine		COMx_InitStructure;					//结构定义
    COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;	//模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
    COMx_InitStructure.UART_BRT_Use   = BRT_Timer1;			//选择波特率发生器, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
    COMx_InitStructure.UART_BaudRate  = 115200ul;			//波特率, 一般 110 ~ 115200
    COMx_InitStructure.UART_RxEnable  = ENABLE;				//接收允许,   ENABLE或DISABLE
    COMx_InitStructure.BaudRateDouble = DISABLE;			//波特率加倍, ENABLE或DISABLE
    UART_Configuration(UART1, &COMx_InitStructure);		//初始化串口1 UART1,UART2,UART3,UART4

  	NVIC_UART1_Init(ENABLE,Priority_1);		//中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
    UART1_SW(UART1_SW_P30_P31);		// 引脚选择, UART1_SW_P30_P31,UART1_SW_P36_P37,UART1_SW_P16_P17,UART1_SW_P43_P44
}

发送数据函数

c 复制代码
TX1_write2buff(xx);// 写一个byte
PrintString1(""); // 写字符串

接收数据函数

cif(COM1.RX_TimeOut 复制代码
    //超时计数
    if(--COM1.RX_TimeOut == 0) {
        if(COM1.RX_Cnt > 0) {
            // 这里处理收到的数据,做具体的逻辑,可以调用自己的on_uart1_recv
            for(i=0; i<COM1.RX_Cnt; i++)	{
                // RX1_Buffer[i]存的是接收的每个字节,写出用 TX1_write2buff
            }
        }
        COM1.RX_Cnt = 0;
    }
}

// 不要处理的太快
delay_ms(10);

查询接收状态函数
UART_CheckReceive():检查是否有数据到达。

  • 返回值:1表示有数据,0表示无数据。
  • 示例代码:
c 复制代码
bit UART_CheckReceive() {
    return RI;          // RI=1时表示收到数据
}

配置printf

c 复制代码
#define	UART1	1       //使用哪些串口就开对应的定义,不用的串口可屏蔽掉定义,节省资源
//#define	UART2	2
//#define	UART3	3
//#define	UART4	4
c 复制代码
#define	PRINTF_SELECT  UART1		//选择 printf 函数所使用的串口,参数 UART1~UART4

注意事项

  • 波特率计算需根据单片机主频调整(如11.0592MHz或24MHz)。
  • 多串口型号(如STC8H)可能支持UART1/UART2,需操作额外寄存器(如S2CON)。
  • 实际开发中建议参考STC官方库(如stc8x_uart.h)。

以上函数需根据具体型号和硬件连接调整。使用STC-ISP工具可生成初始化代码模板。