|
学习lm3s8962之uart读取GPS数据实验
[复制链接]
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
|
|