当前位置: 首页 > news >正文

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

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

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


头文件

#include "UART.h"
#include "NVIC.h"
#include "Switch.h"

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

  • 参数:波特率(如115200 )、数据位(8位)、停止位(1位)、校验位(无)。
  • 示例代码: UART1以此类推的修改
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_BRTxCOMx_InitStructure.UART_BRT_Use   = BRT_Timer1;			//选择波特率发生器, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)COMx_InitStructure.UART_BaudRate  = 115200ul;			//波特率, 一般 110 ~ 115200COMx_InitStructure.UART_RxEnable  = ENABLE;				//接收允许,   ENABLE或DISABLECOMx_InitStructure.BaudRateDouble = DISABLE;			//波特率加倍, ENABLE或DISABLEUART_Configuration(UART1, &COMx_InitStructure);		//初始化串口1 UART1,UART2,UART3,UART4NVIC_UART1_Init(ENABLE,Priority_1);		//中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3UART1_SW(UART1_SW_P30_P31);		// 引脚选择, UART1_SW_P30_P31,UART1_SW_P36_P37,UART1_SW_P16_P17,UART1_SW_P43_P44
}

发送数据函数

TX1_write2buff(xx);// 写一个byte
PrintString1(""); // 写字符串

接收数据函数

    //超时计数if(--COM1.RX_TimeOut == 0) {if(COM1.RX_Cnt > 0) {// 这里处理收到的数据,做具体的逻辑,可以调用自己的on_uart1_recvfor(i=0; i<COM1.RX_Cnt; i++)	{// RX1_Buffer[i]存的是接收的每个字节,写出用 TX1_write2buff}}COM1.RX_Cnt = 0;}
}// 不要处理的太快
delay_ms(10);

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

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

配置printf

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

注意事项

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

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

http://www.dtcms.com/a/313495.html

相关文章:

  • LLM大模型开发-SpringAI:ChatClient、Ollama、Advisor
  • greenfoot主要api
  • 广东省省考备考(第六十五天8.3)——判断推理:图形推理(数量规律题目总结)
  • 使用C++实现日志(3)
  • sqli-labs:Less-23关卡详细解析
  • C的数据类型与变量
  • 2025 Java开发真实试题-阿里面试题分析
  • C语言与数据结构:从基础到实战
  • 机器学习——过采样(OverSampling),解决类别不平衡问题,案例:逻辑回归 信用卡欺诈检测
  • 前端工程化:Vue3(一)
  • 2025年EAAI SCI1区TOP,森林救援调度与路径规划:一种新型蚁群优化算法应用,深度解析+性能实测
  • 智能化门禁常见问题处理思路
  • Linux mount挂载选项详解(重点关注nosuid)
  • 使用Perl和库WWW::Curl的爬虫程序!
  • [spring-cloud: 服务注册]-源码解析
  • Spring Boot AOP 优雅实现异常重试机制
  • 多线程异步日志系统与实现及 TCP/IP C/S 模型
  • IO流-字节流-FileOutputStream
  • day50预训练模型 CBAM注意力
  • Effective C++ 条款20:宁以pass-by-reference-to-const替换pass-by-value
  • LeetCode 2122.还原原数组
  • centos7安装桌面客户软件并远程连接
  • 学习笔记《区块链技术与应用》第五天 分叉
  • Matlab 高斯牛顿法拟合曲线
  • 力扣-200.岛屿数量
  • 01数据结构-二叉搜索树
  • PAT 甲级题目讲解:1012《The Best Rank》
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-55,(知识点:STM32,外设及其特点)
  • 力扣-124.二叉树中的最大路径和
  • LLM调研