ECBM函数库V3学习笔记③-UART1超时判断接收完成

 UART1超时判断接收完成,当超过6ms没有数据进入串口则认为接收数据完成,下一步可以处理数据。本例把接收到的数据原样返回给UART1.

 

 

 

 源码

#include "ecbm_core.h"  //加载库函数的头文件。
#define	TimeOutSet		3
#define	COM_RX1_Lenth	100 
u8 RECED_FLAG=0;
u8 RX_TimeOut=0;
u8 RX_Cnt=0;
u8 rcv_buff[COM_RX1_Lenth];//接收缓存
u8 i;
void main(void){        //main函数,必须的。
    system_init();      //系统初始化函数,也是必须的。
// 	  gpio_mode(D21,GPIO_OUT);
	  timer_init();//先初始化定时器。
		timer_set_timer_mode(0,20000);//timer0定时2ms
		timer_start(0);//再打开定时器0。
		
    while(1)
		{
       if(RX_TimeOut==0)  
		   {
				 if(RX_Cnt > 0)
				{
					for(i=0; i<RX_Cnt; i++)	uart_char(1,rcv_buff[i]);	//收到的数据原样返回
				} 
				RX_Cnt=0;
				RX_TimeOut=TimeOutSet;
       }
 	}
}

void uart1_receive_callback()
{
		if(RX_Cnt >= COM_RX1_Lenth)	RX_Cnt = 0;
		rcv_buff[RX_Cnt++] = SBUF;//收到数据存入缓冲区
	  RX_TimeOut = TimeOutSet;
		
}
void   timer0_it_callback()
{
	if(RX_TimeOut > 0) RX_TimeOut--;
}

效果如图:

 

<think>好的,我现在需要处理用户关于ECBM函数库V3学习资料的问题。用户提到已经参考了个站内引用,分别是关于串口测试、代码体积缩减和定时器库的笔记。用户希望找到更多的学习资料或教程。 首先,我要确认现有的引用内容是否足够覆盖用户的需求。用户提供的个笔记分别涉及串口、编译优化和定时器中断,这些都是嵌入式开发中的常见模块。但可能用户需要更全面的资料,比如GPIO、ADC、PWM等模块的使用方法,或者库的整体结构和设计理念。 接下来,我应该检查是否有其他相关的引用资料未被提及,但根据用户给出的信息,只有个引用。因此,可能需要基于现有的资料,指导用户如何进一步获取或整理学习资料,比如访问码云仓库、查阅官方文档,或者参考STC的库函数说明。 另外,用户可能遇到的具体问题,比如如何生成工程文件、如何配置中断回调函数,或者如何优化代码体积,这些在现有笔记中已有部分解答。需要确保回答中将这些点明确化,并引导用户到相应的引用位置。 还需要考虑用户的学习路径,可能建议按照笔记的顺序从基础开始,逐步深入。同时,生成相关问题可以帮助用户自主探索更多内容,比如如何添加新模块、调试技巧或与其他硬件的集成。 最后,确保回答符合格式要求:使用中文,正确应用LaTeX格式(虽然这个问题可能涉及较少的数学公式,但如果有示例代码中的数学表达式需要注意),结构清晰,引用标识自然添加。同时,生成的相关问题需要与ECBM库相关,帮助用户深化理解。</think>关于ECBM函数库V3的学习资料,根据提供的引用内容,以下是整理后的学习路径和资源指引: ### 1. 基础入门 - **核心资源**:码云平台的ECBM函数库V3项目页面(包含库源码和说明文档)[^1] - **快速上手**: - 使用代码生成工具创建工程框架,参考`ECBM库使用手册`的工程文件生成流程 - 串口测试示例可参考串口1发送字符串的代码结构: ```c // 引用[1]中的串口初始化示例框架 UART1_Init(115200); // 波特率设置 UART1_SendString("Hello ECBM"); ``` ### 2. 关键模块学习 - **定时器模块**: - 中断配置需在`nvic.c`中查看回调函数命名规则 - 定时器0中断回调模板: ```c void timer0_it_callback() { // 用户逻辑(如LED翻转)[^3] } ``` - **代码优化**: - 通过排除未用模块减小生成文件体积,参考STC8G-8H函数库说明的Keil配置方法[^2] ### 3. 进阶学习建议 - **硬件外设**: - GPIO配置(输入/输出模式设置) - ADC采样实现(需查阅库中`adc.c`模块) - PWM波形生成(涉及定时器高级功能) - **调试技巧**: - 利用串口打印寄存器状态 - 通过`#define ENABLE_DEBUG`开启调试信息输出 ### 4. 官方资源整合 | 资源类型 | 获取途径 | 应用场景 | |----------------|------------------------------|------------------------| | 函数库说明PDF | STC官网2022/5/9更新文件 | 底层寄存器理解 | | 示例工程 | 码云项目`/examples`目录 | 模块化功能验证 | | Keil配置指南 | 引用[2]中的STC8G-8H文档 | 编译优化与环境配置 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

armcsdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值