N76E003 串口接收字符串,完整输出

发布者:zonheny最新更新时间:2022-07-11 来源: csdn关键字:N76E003  串口  接收字符串 手机看文章 扫描二维码
随时随地手机看文章

最近调试新唐的N76E003单片机的串口收发,官方及网上对单字节的收发的城西都有,很简单就完成了。


问题是比如:N76E003串口,接收连续数据不完整怎么解决,N76E003串口接收不定长的字符串怎么解决?


这里提供一个方案解决这个问题,采用中断方式完成串口接收,波特率 9600到115200 都没有问题:


参考官方案例为基础,这里不上多余的代码,请自行参考网络。


使用串口调试工具测试,需要注意的一点是,调试工具发送选择,请选中“加回车换行”


bit rcvFlg;

 

UINT16 recvCnt=0;

 

static UINT8 state=0;

 

#define UARTRCBUFSIZE  128

UINT8  UART_BUFFER[UARTRCBUFSIZE];

 

void main()

 

{

 

        InitialUART0_Timer3(115200);

        set_ES;           //enable UART interrupt 启用串口中断

        set_EA;           //enable global interrupt 启用全局中断

 

      while(1)                        

      { 

 

                if (rcvFlg)

                {

 

                        Uart0_SendString(UART_BUFFER);

 

                        set_ES;            //enable UART interrupt

                        SCON = 0x50;      //UART0 Mode1,REN=1,TI=1

                        rcvFlg= 0;

     

                    }

 

 

   }

 

}

 

void serial_IT(void) interrupt 4 

{

   

   if (RI) 

    {     

            UART_BUFFER[recvCnt++] = SBUF;                                  /* if reception occur */

            clr_RI;       /* clear reception flag for next reception */

            if((SBUF == '')||(SBUF == 'n'))  

            {

                 UART_BUFFER[recvCnt]='';

                 state = 1;

            }                

       

    }

        if(TI)

        {

            clr_TI;                             /* if emission occur */

        }

 

        if(state)

        {

            state = 0;

            UART_BUFFER[recvCnt]='';

            clr_ES;

            SCON=0x40; 

            rcvFlg =1;            

            recvCnt = 0;

        } 

 

}

关键字:N76E003  串口  接收字符串 引用地址:N76E003 串口接收字符串,完整输出

上一篇:N76E003AT20单片机串口0调试
下一篇:N76E003低功耗模式(+中断唤醒)

推荐阅读最新更新时间:2024-11-20 04:59

威纶触摸屏 MT510T双串口应用实例
   MT510TV4是威纶科技MT500系列中104寸的人机界面产品。它可以以各种生动的图形方式显示PLC,单片机,变频器,温控表等内部寄存器或继电器的数值和状态,并提供配方卡,报警信息保存等功能.可以通过快选窗口迅速进入所需的设置/监控画面。   MT510TV4双串口通讯方式 目前的MT500系列的驱动程序不断在充实中,新增了对多种新型号PLC的支持,另外除了支持常见的PLC通讯外,更新增对辅助设备(AUX)的支持,实现了人机界面同时与PLC及辅助设备通讯,辅助设备可以是变频器,温控器,单片机等。下面举例说明MT510T双串口通讯方式的如何实现。   MT510T对西门子S7200 PLC & 丹佛斯VLT280
[电源管理]
威纶触摸屏 MT510T双<font color='red'>串口</font>应用实例
STM32串口如何代码实现更高效的接收消息
摘要 本文介绍设计一个环形队列数据结构以实现串口更稳定的接收消息,并有效防止丢包 。 这段时间一直在研究多旋翼飞行器,以及其它的事情,博客好外没更新,再不坚持怕真荒废了哦。 在上篇简单实现MAVLink协议的解析,并演示按照设计好的命令执行对应的事件处理,以及又加入 CRC校验,实现更稳定的通信,但在上文结束时也提到当对一个包进行解析及对应事件处理时,是不能接收新的数据,直到事件处理完成,Msg_Rev.Get 状态设置为 RECEIVING 后方能再接收新的数据。这时,当事件处理需要一定时间,而又有新的数据不断发送过来时,很容易造成数据丢失现象。 如何提高串口通信效率,并避免丢包现象了? 为提高效率,首先想到采用DMA方式,然而
[单片机]
STM32 printf函数打印到串口
学习STM32过程中,经常打交道的莫过于串口,你可以将任何信息,当然重要的是调试信息打印到串口中输出,总是用一个字节发送函数或者字符串发送函数总是有些不放便,之前编程中熟悉的莫过于printf了,下面就给出了用printf打印到串口的方案,当然方案不止一个,仅供参考。 1、 添加printf的头文件 #include int fputc(int ch, FILE *f) { USART_SendData(USART1, (uint8_t) ch); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return ch; } 3、修改一下选中Us
[单片机]
单片机UART串口通信(代码亲自调试成功)
1.实现代码 代码如下(示例): #include reg52.h #include stdio.h //printf头文件 #define uc unsigned char #define uint unsigned int uc flag,i,flag_t,s = ,j=0,flag_n=0; uc code table = 单片机接收了: ; void init() { TMOD=0x20; //定时器工作方式,选择了定时器1,工作方式2 八位初值自动重装的8位定时器。 TH1=0xf3; //定时器1初值 ,设置波特率为2400 晶振11.955Mhz
[单片机]
单片机UART<font color='red'>串口</font>通信(代码亲自调试成功)
关于串口FIFO中断
串口FIFO中断有;RDA CTI 串口的接收模块包括接收缓冲寄存器和移位寄存器。接收的数据进入移位寄存器后经移位处理并行传入缓冲寄存器,事实上,UART的FIFO是一个硬件环形的缓冲队列,物理上不可寻址,不可见,仅U0RBR这个FIFO出口可见。U0RBR就是接收FIFO的第一位。FIFO的长度是可设的,也叫触发点,低于这个长度的字符串不会引起中断,但在实际应用中,不可能串口读入的数据长度总为触发点值的整数倍,为此,引入了CTI即字符接收超时中断,当有不足触发点值规定的字符串读入时,将引起中断,其与串口的RDA中断具有相同的优先级,并会同时被使能。 那么,LPC2000的UART机制是如何判断串口读入数据的一次性容量呢?
[单片机]
队列的介绍和利用环形队列实现STM32进阶之串口环形缓冲区的概述
队列的概念 在此之前,我们来回顾一下队列的基本概念:队列 (Queue):是一种先进先出(First In First Out ,简称 FIFO)的线性表,只允许在一端插入(入队),在另一端进行删除(出队)。 队列的特点 类似售票排队窗口,先到的人看到能先买到票,然后先走,后来的人只能后买到票 队列的常见两种形式 普通队列 在计算机中,每个信息都是存储在存储单元中的,比喻一下吧,上图的一些小正方形格子就是一个个存储单元,你可以理解为常见的数组,存放我们一个个的信息。 当有大量数据的时候,我们不能存储所有的数据,那么计算机处理数据的时候,只能先处理先来的,那么处理完后呢,就会把数据释放掉,再处理下一个。那么,已经处
[单片机]
队列的介绍和利用环形队列实现STM32进阶之<font color='red'>串口</font>环形缓冲区的概述
STM32F103单片机串口通信带奇偶校验位
在调试Modubus协议时需要用到串口的奇偶校验位,但是平时用串口时很少用到奇偶校验位,网上搜相关的历程也很少,将自己写的串口奇偶校验代码分享上来方便以后查阅。 如果用库函数的话,添加奇偶检验位就很简单,在初始化串口的时候,将默认的无校验位修改为奇校验或者偶校验,同时将数据位设置为9位。 串口初始化代码如下: #include uart2.h #define CHECK_NONE_ONE_STOP 0 //无校验位 1个停止位 1有效 0 无效 #define CHECK_NONE_TWO_STOP 1 //无校验位 2个停止位 1有效 0 无效 #define CHECK_EVEN 1 //偶数
[单片机]
STM32F103单片机<font color='red'>串口</font>通信带奇偶校验位
FPGA与单片机实现数据RS232串口通信的设计
1 前言 现场可编程逻辑器件(FPGA)在高速采集系统中的应用越来越广,由于FPGA对采集到的数据的处理能力比较差,故需要将其采集到的数据送到其他CPU系统来实现数据的处理功能,这就使FPGA系统与其他CPU系统之间的数据通信提到日程上,得到人们的急切关注。本文介绍利用VHDL语言实现 FPGA与单片机的串口异步通信电路。 整个设计采用模块化的设计思想,可分为四个模块:FPGA数据发送模块,FPGA波特率发生控制模块,FPGA总体接口模块以及单片机数据接收模块。本文着重对FPGA数据发送模块实现进行说明。 2 FPGA数据发送模块的设计 根据RS232 异步串行通信来的帧格式,在FPGA发送模块中采用的每一帧格式为:1位开始位 8
[单片机]
FPGA与单片机实现数据RS232<font color='red'>串口</font>通信的设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多开源项目推荐
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved