社区导航

 

搜索
查看: 2148|回复: 0

学习lm3s8962之uart读取GPS数据实验

[复制链接]

1110

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2010-11-7 17:09 | 显示全部楼层 |阅读模式
GPS模块选择带有标准ttl电平NMEA标准输出的模块,这个实验只读取收的数据,不做解析,带解析的程序超出了keil 32k限制
由于GPS输出对时间要求不严格所以没有使用中断方式获得数据

#include <hw_memmap.h>
#include <hw_types.h>
#include <sysctl.h>
#include <string.h>
#include <uart.h>
#include <gpio.h>

#include <lm3s8962.h>   
#include "rit128x96x4.h"

  char strbuff[8][201];//8行缓存
  char cThisChar;
  unsigned int i=0,j=0,k=0,t=0;
  char out[50];
 
int main(void){

    SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_8MHZ);

    RIT128x96x4Init(1000000);//初始化屏幕

    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

    GPIOPinTypeUART(GPIO_PORTD_BASE, GPIO_PIN_2 | GPIO_PIN_3);

    UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 9600,
                        (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                         UART_CONFIG_PAR_NONE));

    while(1)
    {
        while(UARTCharsAvail(UART1_BASE))
    {
        // Read the next character from the UART .
        //
        cThisChar=UARTCharGetNonBlocking(UART1_BASE);
        if(cThisChar=='$' || i>200){   //$字符的是每一行的头字符,在此换行    
            i=0;
            if(k<8)k++;else k=0;//换行
            for(j=0;j<200;j++) strbuff[k][j]=' ';//清空将要写入的缓存
        }
        strbuff[k]=cThisChar;
 i++;
    }
    RIT128x96x4StringDraw(strbuff[k], 0, k*10, 8);
    //SysCtlDelay(SysCtlClockGet() / 12);
    }
}
程序有点乱...这个会改进

另外这里有开源的NMEA格式数据解析的库http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4290303&bbs_page_no=1&bbs_id=3072

来源:EEWorld 微控制器 MCU板块,转载请附上链接
DSC_0039.JPG


您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-10-14 09:16 , Processed in 0.087514 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表