打印
[Kinetis]

KL25与gps串口接收lcd显示问题!

[复制链接]
2389|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
774729254|  楼主 | 2013-11-27 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 774729254 于 2013-11-27 11:25 编辑

我想实现kl25串口接收gps的数据,然后再lcd上显示出来,同时涉及到对gps数据的解析,我只需要如下所示 的数据,是用串口接收n个字符的函数还是串口接收1个字符的函数好呢?
$GPGGA,023543.00,2308.28715,N,11322.09875,E

相关帖子

沙发
FSL_TICS_Robin| | 2013-11-27 11:46 | 只看该作者
不清楚你指的是哪个函数诶?
能给出你程序下载地址吗

使用特权

评论回复
板凳
774729254|  楼主 | 2013-11-27 13:37 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-27 11:46
不清楚你指的是哪个函数诶?
能给出你程序下载地址吗

我是要把我的程序上传到网上吗

使用特权

评论回复
地板
黄小俊| | 2013-11-27 14:23 | 只看该作者

使用特权

评论回复
5
FSL_TICS_Robin| | 2013-11-27 14:35 | 只看该作者
你这句话“是用串口接收n个字符的函数还是串口接收1个字符的函数好呢?”的意思是:
是这种意思:不用串口接收缓冲区,来一个字符进次中断。或启用串口接收缓冲区,收到多个字符后再触发串口接收中断一下子取出。
还是这种意思:你有2个自己定义的函数,一个是处理1个字符的,另个可以处理多个字符(那这个函数是你写的,我就不清楚了)

使用特权

评论回复
6
jd972594| | 2013-11-27 14:41 | 只看该作者
你做的这个我以前也做过诶,但那会是用51单片机做的。
51单片机的串口接收中断没有缓冲区,每次接收到串口字符就会进入串口接收中断。
我当时是先判断是否自己所需数据,然后逐次存入数组,整串字符收完后给出一个标志,主函数里根据标志将数组显示的。

使用特权

评论回复
7
774729254|  楼主 | 2013-11-27 15:08 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-27 14:35
你这句话“是用串口接收n个字符的函数还是串口接收1个字符的函数好呢?”的意思是:
是这种意思:不用串口 ...

//============================================================================
//函数名称:uart_re1
//参数说明:uartNo: 串口号:UART_0、UART_1、UART_2
//          fp:接收成功标志的指针:*fp=0,成功接收;*fp=1,接收失败
//函数返回:接收返回字节
//功能概要:串行接收1个字节
//============================================================================
uint_8 uart_re1 (uint_8 uartNo,uint_8 *fp)
{
    uint_32 t;
    uint_8  dat;
        UARTLP_MemMapPtr uartch1=UART0_BASE_PTR;
    UART_MemMapPtr uartch2 = UART_ARR[uartNo-1];

    for (t = 0; t < 0xFBBB; t++)//查询指定次数
    {
            if(0==uartNo)
            {
            //判断接收缓冲区是否满
            if ((uartch1->S1) & UART_S1_RDRF_MASK )
            {
                dat = uartch1->D;
                *fp= 0;  //收到数据
                break;
            }
            }
            else
            {
            //判断接收缓冲区是否满
            if ((uartch2->S1) & UART_S1_RDRF_MASK )
            {
                dat = uartch2->D;
                *fp= 0;  //收到数据
                break;
            }
            }

    }//end for
    if(t >= 0xFBBB)
    {
        dat = 0xFF;
        *fp = 1;  //未收到数据
    }
    return dat;    //返回接收到的数据

}

使用特权

评论回复
8
774729254|  楼主 | 2013-11-27 15:09 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-27 14:35
你这句话“是用串口接收n个字符的函数还是串口接收1个字符的函数好呢?”的意思是:
是这种意思:不用串口 ...

//============================================================================
//函数名称:uart_reN
//参数说明:uartNo: 串口号:UART_0、UART_1、UART_2                                                   
//          buff: 接收缓冲区
//          len:接收长度
//函数返回:函数执行状态 0=正常;非0=异常
//功能概要:串行 接收n个字节
//============================================================================
uint_8 uart_reN (uint_8 uartNo ,uint_16 len ,uint_8* buff)
{
    uint_16 i;
    uint_8 flag = 0;

    for (i = 0; i < len && 0 == flag; i++)
    {
        buff = uart_re1(uartNo, &flag);
    }
    if (i >= len)
        return 1; //接收失败
    else
    {
            return 0; //接收成功
    }
}

使用特权

评论回复
9
FSL_TICS_Robin| | 2013-11-27 15:51 | 只看该作者
如果你测试过这两个函数都可用,那就根据你具体情况而定啦。
如果想接收完整个字符串一下子显示在屏幕上,少进中断,那么就用多个字符的。
如果想每接收到一个字符就要立马显示在屏幕上,对于每个字符进一次中断无所谓,那就1个字符的吧。

使用特权

评论回复
10
jd972594| | 2013-11-27 15:56 | 只看该作者
楼主我看你最近一直在玩KL25的串口,你串口程序哪来的呀?
为什么我从飞思卡尔官网下的KL25_SC中没串口的例程呢

使用特权

评论回复
11
774729254|  楼主 | 2013-11-27 16:11 | 只看该作者
jd972594 发表于 2013-11-27 15:56
楼主我看你最近一直在玩KL25的串口,你串口程序哪来的呀?
为什么我从飞思卡尔官网下的KL25_SC中没串口的例 ...

我是苏州大学嵌入式中心开发的例程

使用特权

评论回复
12
774729254|  楼主 | 2013-11-28 09:15 | 只看该作者
jd972594 发表于 2013-11-27 14:41
你做的这个我以前也做过诶,但那会是用51单片机做的。
51单片机的串口接收中断没有缓冲区,每次接收到串口 ...

能把你的程序给我看看吗

使用特权

评论回复
13
jd972594| | 2013-11-28 10:02 | 只看该作者
我51单片机时用的是汇编写的,麻烦的要死。
你有啥问题就直接问吧,C语言环境下要简单多了。

使用特权

评论回复
14
774729254|  楼主 | 2013-11-28 10:23 | 只看该作者
jd972594 发表于 2013-11-28 10:02
我51单片机时用的是汇编写的,麻烦的要死。
你有啥问题就直接问吧,C语言环境下要简单多了。
...

你当时采集的是gps协议所有的帧,还是某一串帧?能告诉我你的qq吗,方便交流啊

使用特权

评论回复
15
774729254|  楼主 | 2013-11-28 10:24 | 只看该作者
jd972594 发表于 2013-11-28 10:02
我51单片机时用的是汇编写的,麻烦的要死。
你有啥问题就直接问吧,C语言环境下要简单多了。
...

你接受的是gps所有 的数据,还是某一串协议的数据,能告诉你的qq吗,方便交流,呵呵

使用特权

评论回复
16
jd972594| | 2013-11-28 15:35 | 只看该作者
774729254 发表于 2013-11-28 10:24
你接受的是gps所有 的数据,还是某一串协议的数据,能告诉你的qq吗,方便交流,呵呵 ...

GPS报文有很多啊,一般只收自己需要的内容。

使用特权

评论回复
17
FSL_TICS_Robin| | 2013-11-28 15:39 | 只看该作者
你要接收$GPGGA就根据接收到的串口字符判断呀,如果判断开头$之后不是GPGGA就清除数组等待下次$到来后继续接收并判断。
如果是$GPGGA就存入数组中,然后将你要的信息提取出来

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

299

帖子

1

粉丝