这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 串口中间件求助

共2条 1/1 1 跳转至

串口中间件求助

院士
2006-09-17 18:14:16     打赏
串口中间件求助



关键词: 串口     中间件     求助    

院士
2006-12-22 22:43:00     打赏
2楼
问 我用的easyARM2200开发平台,想做简单的。pc通过串口调试助手发送数据给开发发板,开发板在把数据回送给pc。可是发现超过16字节,数据就会丢失。参见4。2实验。请斑竹和各位帮忙啊,谢谢。 1: 可能是你的串口调试助手有BUG,换“丁丁”的试一试 2: 改一下把UART0_FIFO_LENGTH         16
改以下 3: 不行啊换了“丁丁”也一样。
UART0_FIFO_LENGTH   这个好像是uart0自带的16位FIFO,改了会有用吗?我试试。继续求助啊!!! 4: UART0的FIFO触发点最大14个字节   把你的程序贴出来吧,这样好分析

   http://www.shawyoo.com 下载中心 有UART基于FIFO和中断的程序。还有串口通V3.11,是个串口调试软件
    5: 我是新手,改的zlg配套的例子原例子是发4个字节没问题,我想发20个就有点问题。
*--------------文件信息--------------------------------------------------------------------------------
**文   件   名: test.c
**创   建   人: 陈明计
**最后修改日期: 2003年7月2日
**描        述: 数据队列使用例子
**              
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈明计
** 版  本: v1.0
** 日 期: 2003年7月2日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**/
#include "config.h"

#define  TASK_STK_SIZE                  64
#define   BUFFLEN                       20
OS_STK        TaskStk[TASK_STK_SIZE];
OS_STK        TaskStartStk[TASK_STK_SIZE];

OS_EVENT *Uart0ReviceMbox;

void  TaskStart(void *data);
void  TaskUart0Revice(void *pdata);
  
void PC_DispChar(uint8 *cp)
{
    OS_ENTER_CRITICAL();
    
    UART0Write(cp,BUFFLEN);
    
    OS_EXIT_CRITICAL();
}
int main (void)
{
    OSInit();

    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
    OSStart();
    return 0;
}
void  TaskStart(void *pdata)
{
    uint8 *cp;
    uint8 err;

    pdata = pdata;                                                  /* 避免编译警告 */

    Uart0ReviceMbox = OSMboxCreate(NULL);                           /* 建立邮箱     */
    if (Uart0ReviceMbox == NULL)
    {
        while (1);
    }

    OSTaskCreate(TaskUart0Revice, (void *)0,
                 &TaskStk[TASK_STK_SIZE - 1], 10);                  /* 创建任务     */

    TargetInit();                                                   /* 目标板初始化 */
    for (;;)
    {
        cp = (uint8 *)OSMboxPend(Uart0ReviceMbox, 0, &err);         /* 接收数据 */
        
        PC_DispChar(cp);                                            /* 显示接收到的数据 */
    }
}
void  TaskUart0Revice(void *pdata)
{
    uint8 *cp;
    uint8 Buf[BUFFLEN], temp, i;
    
    pdata = pdata;                                                  /* 避免编译警告 */

    for (;;)
    {

        cp = Buf;
        while (UART0Getch() != 0xff);                               /* 接收数据头 */    
        for (i = 0; i < BUFFLEN; i++)
        {
            temp = UART0Getch();
            
            *cp++ = temp;
        }
        OSMboxPost(Uart0ReviceMbox, (void *)Buf);
    }
}

输入:ff 01 02 ...0a  0b ..12 13 14,输出:ff 01 02 ....0a 0b 0c 0d 0e 0f ff 01 02 03 04. 6: 请将你的完全的程序发给我,我有同样的问题.请将你的完全的程序发给我,我有同样的问题.
zgp_zgp@sina.com

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]