嵌入式综合实验报告_第1页
嵌入式综合实验报告_第2页
嵌入式综合实验报告_第3页
嵌入式综合实验报告_第4页
嵌入式综合实验报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选文档嵌入式系统综合试验报告学号:姓名:Shanghai University of Engineering ScienceSchool of Electronic and Electrical Engineering基于STM32的GPS信息显示系统嵌入式系统综合试验报告班级:0211112 姓名:褚建勤 学号:021111228班级:0211112 姓名:于心忆 学号:021111216班级:0211112 姓名:乐浩奎 学号:021111232一、产品设计要求(产品规格描述)1 、嵌入式产品名称 GPS信息显示系统2 、嵌入式产品目的在学校的生活中,你经常可能需要联系不是同一间宿舍的同

2、学,但是你不能确定他现在在什么地方,这时候全球定位系统(GPS)就可以发挥作用了,但是传统的GPS系统只能供应经纬度信息,不能直观的显示你想要找到人在何处,我们的系统就在传统的GPS的基础上添加了对应位置显示的功能,便利你更便利更快捷的找到你想找的同学3 、嵌入式产品功能使用GPS输入用户位置信息GPS将相关经纬度信息反馈给主处理器主处理器处理相关位置信息并将信息转换为对应位置在LCD上显示出来在LCD上输出用户状态信息4 、嵌入式产品的输入和输出输入设备:GPS系统输出设备:LCD二、产品方案设计(产品设计方案)1 、产品架构设计LCDstm32GPS模块2 、产品硬件设计1 )处理器选择本

3、系统选用基于ARMCortex-M3内核的STM32F103RB嵌入式微把握器作为处理器。 选用缘由A 技术因素工作频率: 最高72MHz。内部和外部存储器: 128K字节的闪存程序存储器,用于存放程序及数据;多达20K字节的内置SRAM,CPU能以0等待周期访问(读/写)。定时器和中断:包含1个高级把握定时器、3个一般定时器,以及2个看门狗定时器和1个系统嘀嗒定时器;内置嵌套的向量式中断把握器,能够处理多达43个可屏蔽中断通道和16个优先级。IO接口:通用输入输出接口(GPIO)。每个GPIO管脚都可以由软件配置成输出(推拉或开路)、输入(带或不带上拉或下拉)或其它的外设功能口。多数GPIO

4、管脚都与数字或模拟的外设共用。全部的GPIO管脚都有大电流通过力量。在需要的状况下,I/O管脚的外设功能可以通过一个特定的操作锁定,以避开意外的写入I/O寄存器。在APB2上的I/O脚可达18MHz的翻转速度。通用同步/异步接受发送器(USART):USART1接口通信速率可达4.5兆位/秒,其他接口的通信速率可达2.25兆位/秒。USART接口具有硬件的CTS和RTS信号管理、支持IrDA SIR ENDEC传输编解码、兼容ISO7816的智能卡并供应LIN主/从功能。全部USART接口都可以使用DMA操作。环境要求:-40C至+85C温度范围。B 非技术因素开发及调试工具:Keil MDK

5、 参考资料:STM32F103RBT6官方资料操作系统:Windows XP / Windows 7 / Windows 8内部AHB时钟频率 :72 MHz。内部APB1时钟频率:36 MHz。内部APB2时钟频率:72 MHz。标准工作电压VDD:2.0V3.6V。 模拟部分工作电压(未使用ADC):必需与VDD相同,最大3.6V。模拟部分工作电压(使用ADC):必需与VDD相同,2.4V3.6V。备份部分工作电压VBAT:1.8V3.6V。电流:睡眠时与工作时差异较大,还与打开的外设多少有关,范围大约为4mA50mA。存储温度:-65至+150度。工作温度:-40至+85度。 3 、产品

6、软件设计1 )操作系统选择 无操作系统2 )其他重要器件选择LCD模块:功能:主要特性:GPS模块: 该GPS模块选用的是型号为ATK-NEO-M6_V12的GPS模块,是ALIENTEK生产的一款高性能GPS模块,模块核心接受UBLOX公司的NEO-M模组,具有50个通道,追踪灵敏度高达-161dBm,测量输出频率最高可达5HZ。功能: 实现当前系统位置的定位主要特性:1,模块接受UBLOX NEO-M6模组,体积小,性能优异。2,模组自带陶瓷天线及MAXIM公司20,5dB高增益LNA芯片,搜星力量强。3,模组可通过串口进行各种参数设置,并可以保存在EEPROM,使用便利。4,模组自带IP

7、X接口,可以连接各种有源天线,适应力量强。5模组兼容3.3V/5.5V电平,便利连接各种单片机系统。6,模组自带可充电后备电源,可以掉电保持星历数据注:在主电源断电后,后备电池可以维持半小时左右的GPS星历数据的保存,以支持温启动或者热启动,从而实现快速定位。 GPS模块图3 )开发环境选择 本系统选用KEIL 作为开发环境。KeiL uVision4完善支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件;拥有业行领先的ARM C/C+编译工具链;供应带标准驱动类的USB 设备和USB 主机栈;为带图形用户接口的嵌入式系统供应了完善的GUI库支持;ULINKpro可实时分析运

8、行中的应用程序,且能记录Cortex-M指令的每一次执行;执行分析工具和性能分析器可使程序得到最优化等特征。4 )开发语言选择 产品软件开发语言:C语言C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依靠计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理力量,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,具体应用比如单片机以及嵌入式系统开发。主要优点如下:简洁紧凑、机敏便利;运算符丰富;数据类型丰富;表达方式机敏有用;允许直接访问物理地址,对硬件进行操作

9、;生成目标代码质量高,程序执行效率高;可移植性好;表达力强。由于大一刚进校时就接触C语言,所以C语言相对我们而言比较生疏,在编写中更加简洁。4 、项目组成员分工姓名现有工作基础项目中任务项目中估计总共工作时间(小时)组长褚建勤C语言基础GPS90组员于心忆初学串口90组员乐浩奎初学LCD905 、产品开发方案时间任务方案1-10制定嵌入式系统综合试验方案。11-15查阅相关书籍,到官方网站下载GPS使用说明。15-30了解生疏AT指令、串口通信的学问。31-45了解生疏GPS相关学问46-60完成GPS初始化及基础设置61-75添加对应位置显示功能76-90撰写嵌入式系统综合试验报告6 、产品

10、成本分析1 )硬件成本清单产品中硬件材料(如元器件芯片、开发板、仿真器、编程器和测量仪器等)及开发费用(如制板及焊接等费用)类别型号参数单价数量合计供应商联系人及方式CPUSTM32f103RB1381138正点原子GPS Neo-6m-v1285185青岛达英电信器材有限公司05326884178LCD TFTLCD 2.81 要求供应商必需是专业公司非淘宝个人用户并能开立正规的产品发票2 )软件成本清单产品中所用软件(如嵌入式开发环境、嵌入式操作系统、GUI支持包和TCPIP协议栈等)费用类别名称单价数量合计供应商联系人及方式开发环境Keil uVsion4010无无 要求供应商必需是专业

11、公司非淘宝个人用户并能开立正规的产品发票3 )人工成本清单 人工成本= 50小时*10元/小时*3人=1500元 4 )其他成本 无本5 )产品总成本及分析 产品总成本硬件成本软件成本人工成本其他成本=138+ 三、产品实现1 、硬件实现(必需)嵌入式处理器的最小系统图GPS模块原理图嵌入式处理器与GPS模块间的具体连接连线图硬件连接:STM32开发板-ATK-NEO-6M GPS模块 PA9 -RXD PA10-TXD GND -GND 5V/3.3V-VCC 2 、软件实现(必需)软件编程中设计思路(main主程序流程图)GPS模块主要函数:u8 NMEA_Comma_Pos(u8 *bu

12、f,u8 cx);功能:分析GPS接收到的数据,接受逗号取值法参数:数据缓存区数据首地址、逗号位置标号:返回值: 两个逗号之间的数据int NMEA_Str2num(u8 *buf,u8*dx);功能:把猎取到的字符串转换为数字参数:数据缓存区数据首地址、小数点位置返回值:转换后的数值void NMEA_GPGSV_Analysis(nmea_msg *gpsx,u8 *buf);工能:用来猎取可见卫星的总数、卫星编号、卫星仰角、卫星方位角、信噪比等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无.$GPGSV语句的基本格式如下:$GPGSV,(1),(2),(3),(4),(5)

13、,(6),(7),.,(4),(5),(6),(7)*hh(CR)(LF)(1) GSV语句总数(2)本句GSV的编号(3) 可见卫星总数(0012,前面的0也将被传输)(4)卫星编号(0132,前面的0 也将被传输)(5)卫星仰角(0090度,前面的0 也将被传输)(6)卫星方位角(000359度,前面的0也将被传输)(7)信噪比(0099dB,没有跟踪到卫星时为空)void NMEA_GPGGA_Analysis(nmea_msg *gpsx,u8 *buf);功能:用来猎取UTC时间、经纬度、海拔高度等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无$GPGGA的语句格式如下

14、:$GPGGA, $GPGGA, $GPGGA,$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M, (10 ),M,M, (11 ),(12 )*hh (CR )( LF )(1) UTC时间,格式hhmmss.ss(2) 纬度ddmm.mmmmm 度分格式 );(3) 纬度半球 N或 S(北纬 或南);(4) 经度,格式为 dddmm.mmm 度分格式;(5) 经度半球 E或 W(东经 或西);(6) GPSGPS 状态 ,0= 未定位, 1= 非差分定位, 2= 差分定位 ;(7) 正在使用的于定位卫星数量(0012)(8) HDOP 水平精确度 因

15、子( 0.599.9 )(9) 海拔 高度 (-9999.9 到 9999.9米)(10 ) 大地水准面高度(-9999.9 到 9999.9 米)(11 ) 差分 时间(从最近一次接收到差分信号开头的秒数,非定位此项为空) (12 ) 差分参考基站标号 (0000 到 1023 ,首位 0也将传送 ,非差分定位此项为空void NMEA_GPGSA_Analysis(nmea_msg *gpsx,u8 *buf);功能:用来获得卫星号、水平/垂直因子等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无$GPGSA的语句格式如下:$GPGSA,(1),(2),(3),(3),(3),

16、(3),(3),(3),(3),(3),(3),(3),(3),(3),(4),(5),(6)*hh(CR)(LF)(1) 模式, M=手动,A=自动(2) 定位类型,1=为定位,2=2D定位,3=3D定位(3)正在用于定位的卫星号(0032)(4)PDOP综合位置精度因子(0.599.9)(5)HDOP水平精度因子(0.599.9)(6)VDOP垂直精度因子(0.599.9)void NMEA_GPRMC_Analysis(nmea_msg *gpsx,u8 *buf);功能:猎取UTC时间、UTC日期、地面速度等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无$GP $GPRM

17、C语句的基本格式如下: $GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*(CR)(LF)(1) (1) (1) UTC时间 hhmmsshhmmss(时分秒)(2) A= 有效定位, V= 无效定位 无效定(3) ddmm.mmm (度分) (度分)(4) 纬度半球 N(北半球)或 S(南半球)(5) 经度 dddmm.mm(度分(度分)(6)经度半球 E(东经)或 W(西经)(7)地面速率 000.0999.9 节)(8) 地面航向( 000.0359.9 度,以 真北方 为参考基准)(9) UTC日期, 日期, ddmmy

18、yddmmyy (日月年)(10)磁偏角(000.0180.0 度,前导位数不足则补0)(11)磁偏角方向, E(东)或 W(西) (12) 模式指示( A= 自主定位 D= 差分 E= 估算, N= 数据无效) void NMEA_GPVTG_Analysis(nmea_msg *gpsx,u8 *buf);功能:猎取地面航向、地面速率等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无格式如下:$GPVTG,(1),T,(2),M,(3),N,(4),K, (5)*hh(CR)(LF)(1) 以真北为参考基准的地面航向(000359度,前面的0 也将被传输)(2) 以磁北为参考基

19、准的地面航向(000359度,前面的0 也将被传输)(3)地面速率(000.0999.9节,前面的0 也将被传输)(4)地面速率(0000.01851.8公里/小时,前面的0也将被传输)(5)模式指示 (A=自主定位,D=差分,E= 估算,N=数据无效)四、用户使用说明 该产品是一个基于STM32的校内定位系统,在你接通电源、按下电源后系统能够精确的显示出你当前的坐标、时间、以及海拔等信息。 由于室内GPS无法接收到信号,该产品只能在室外进行定位五、产品开发小结1 、产品完成状况(必需) 本产品最初的目的是实现一个个人定位系统、并且实现位置信息的跟踪,但是由于技术问题只完成了当前位置的定位。花

20、费的时间:60小时费用:2 、产品存在问题(必需)该产品的定位并不完善,仅仅是能够猎取到当前位置,当然假如你是在我们本校内的话、还可以显示具体的校内地址信息,比如图书馆、实训楼、教学楼等信息。但是有一个问题就是没有实现将数据传输到手机端或者PC端,无法进行位置信息的跟踪。3、产品开发过程中的阅历和体会(必需)在这次嵌入式的试验过程中学习到了好多以前没有接触过的东西,比如STM32开发板的使用,GPS模块的使用,在这过程中学会了如何点亮LCD、LED,如何让一个GPS开头工作、并且把猎取的数据显示在LCD上等等。假如要自己编写全部的代码以我们目前的水平还是有肯定的难度的,所以这次试验基本上是在原

21、有的代码上进行了肯定的修改来实现自己的目标程序。通过对代码的反复读写与争辩基本上理解了GPS的实现过程。附2:全部源程序代码(必需)#include gps.h #include led.h #include delay.h #include usart1.h #include stdio.h #include stdarg.h #include string.h #include math.h/从buf里面得到第cx个逗号所在的位置/返回值:00XFE,代表逗号所在位置的偏移./ 0XFF,代表不存在第cx个逗号 u8 NMEA_Comma_Pos(u8 *buf,u8 cx) u8 *p=

22、buf;while(cx) if(*buf=*|*bufz)return 0XFF;/遇到*或者非法字符,则不存在第cx个逗号if(*buf=,)cx-;buf+;return buf-p; /mn函数/返回值:mn次方.u32 NMEA_Pow(u8 m,u8 n)u32 result=1; while(n-)result*=m; return result;/str转换为数字,以,或者*结束/buf:数字存储区/dx:小数点位数,返回给调用函数/返回值:转换后的数值int NMEA_Str2num(u8 *buf,u8*dx)u8 *p=buf;u32 ires=0,fres=0;u8 i

23、len=0,flen=0,i;u8 mask=0;int res;while(1) /得到整数和小数的长度if(*p=-)mask|=0X02;p+;/是负数if(*p=,|(*p=*)break;/遇到结束了if(*p=.)mask|=0X01;p+;/遇到小数点了else if(*p9|(*p0)/有非法字符ilen=0;flen=0;break;if(mask&0X01)flen+;else ilen+;p+;if(mask&0X02)buf+;/去掉负号for(i=0;i5)flen=5;/最多取5位小数*dx=flen; /小数点位数for(i=0;isvnum=NMEA_Str2n

24、um(p1+posx,&dx);for(i=0;ilen;i+) p1=(u8*)strstr(const char *)p,$GPGSV); for(j=0;jslmsgslx.num=NMEA_Str2num(p1+posx,&dx);/得到卫星编号else break; posx=NMEA_Comma_Pos(p1,5+j*4);if(posx!=0XFF)gpsx-slmsgslx.eledeg=NMEA_Str2num(p1+posx,&dx);/得到卫星仰角 else break;posx=NMEA_Comma_Pos(p1,6+j*4);if(posx!=0XFF)gpsx-sl

25、msgslx.azideg=NMEA_Str2num(p1+posx,&dx);/得到卫星方位角else break; posx=NMEA_Comma_Pos(p1,7+j*4);if(posx!=0XFF)gpsx-slmsgslx.sn=NMEA_Str2num(p1+posx,&dx);/得到卫星信噪比else break;slx+; p=p1+1;/切换到下一个GPGSV信息 /分析GPGGA信息/gpsx:nmea信息结构体/buf:接收到的GPS数据缓冲区首地址void NMEA_GPGGA_Analysis(nmea_msg *gpsx,u8 *buf)u8 *p1,dx; u8

26、 posx; p1=(u8*)strstr(const char *)buf,$GPGGA);posx=NMEA_Comma_Pos(p1,6);/得到GPS状态if(posx!=0XFF)gpsx-gpssta=NMEA_Str2num(p1+posx,&dx);posx=NMEA_Comma_Pos(p1,7);/得到用于定位的卫星数if(posx!=0XFF)gpsx-posslnum=NMEA_Str2num(p1+posx,&dx); posx=NMEA_Comma_Pos(p1,9);/得到海拔高度if(posx!=0XFF)gpsx-altitude=NMEA_Str2num(p

27、1+posx,&dx); /分析GPGSA信息/gpsx:nmea信息结构体/buf:接收到的GPS数据缓冲区首地址void NMEA_GPGSA_Analysis(nmea_msg *gpsx,u8 *buf)u8 *p1,dx; u8 posx; u8 i; p1=(u8*)strstr(const char *)buf,$GPGSA);posx=NMEA_Comma_Pos(p1,2);/得到定位类型if(posx!=0XFF)gpsx-fixmode=NMEA_Str2num(p1+posx,&dx);for(i=0;ipossli=NMEA_Str2num(p1+posx,&dx);

28、else break; posx=NMEA_Comma_Pos(p1,15);/得到PDOP位置精度因子if(posx!=0XFF)gpsx-pdop=NMEA_Str2num(p1+posx,&dx); posx=NMEA_Comma_Pos(p1,16);/得到HDOP位置精度因子if(posx!=0XFF)gpsx-hdop=NMEA_Str2num(p1+posx,&dx); posx=NMEA_Comma_Pos(p1,17);/得到VDOP位置精度因子if(posx!=0XFF)gpsx-vdop=NMEA_Str2num(p1+posx,&dx); /分析GPRMC信息/gpsx

29、:nmea信息结构体/buf:接收到的GPS数据缓冲区首地址void NMEA_GPRMC_Analysis(nmea_msg *gpsx,u8 *buf)u8 *p1,dx; u8 posx; u32 temp;float rs; p1=(u8*)strstr(const char *)buf,GPRMC);/$GPRMC,经常有&和GPRMC分开的状况,故只推断GPRMC.posx=NMEA_Comma_Pos(p1,1);/得到UTC时间if(posx!=0XFF)temp=NMEA_Str2num(p1+posx,&dx)/NMEA_Pow(10,dx); /得到UTC时间,去掉msg

30、psx-utc.hour=8+temp/10000;if(gpsx-utc.hour=24)gpsx-utc.hour=gpsx-utc.hour-24;gpsx-utc.min=(temp/100)%100;gpsx-utc.sec=temp%100; posx=NMEA_Comma_Pos(p1,3);/得到纬度if(posx!=0XFF)temp=NMEA_Str2num(p1+posx,&dx); gpsx-latitude=temp/NMEA_Pow(10,dx+2);/得到rs=temp%NMEA_Pow(10,dx+2);/得到 gpsx-latitude=gpsx-latitu

31、de*NMEA_Pow(10,5)+(rs*NMEA_Pow(10,5-dx)/60;/转换为 posx=NMEA_Comma_Pos(p1,4);/南纬还是北纬 if(posx!=0XFF)gpsx-nshemi=*(p1+posx); posx=NMEA_Comma_Pos(p1,5);/得到经度if(posx!=0XFF) temp=NMEA_Str2num(p1+posx,&dx); gpsx-longitude=temp/NMEA_Pow(10,dx+2);/得到rs=temp%NMEA_Pow(10,dx+2);/得到 gpsx-longitude=gpsx-longitude*N

32、MEA_Pow(10,5)+(rs*NMEA_Pow(10,5-dx)/60;/转换为 posx=NMEA_Comma_Pos(p1,6);/东经还是西经if(posx!=0XFF)gpsx-ewhemi=*(p1+posx); posx=NMEA_Comma_Pos(p1,9);/得到UTC日期if(posx!=0XFF)temp=NMEA_Str2num(p1+posx,&dx); /得到UTC日期gpsx-utc.date=temp/10000;gpsx-utc.month=(temp/100)%100;gpsx-utc.year=2000+temp%100; /分析GPVTG信息/gp

33、sx:nmea信息结构体/buf:接收到的GPS数据缓冲区首地址void NMEA_GPVTG_Analysis(nmea_msg *gpsx,u8 *buf)u8 *p1,dx; u8 posx; p1=(u8*)strstr(const char *)buf,$GPVTG); posx=NMEA_Comma_Pos(p1,7);/得到地面速率if(posx!=0XFF)gpsx-speed=NMEA_Str2num(p1+posx,&dx);if(dxspeed*=NMEA_Pow(10,3-dx); /确保扩大1000倍 /提取NMEA-0183信息/gpsx:nmea信息结构体/buf

34、:接收到的GPS数据缓冲区首地址void GPS_Analysis(nmea_msg *gpsx,u8 *buf)NMEA_GPGSV_Analysis(gpsx,buf);/GPGSV解析NMEA_GPGGA_Analysis(gpsx,buf);/GPGGA解析 NMEA_GPGSA_Analysis(gpsx,buf);/GPGSA解析NMEA_GPRMC_Analysis(gpsx,buf);/GPRMC解析NMEA_GPVTG_Analysis(gpsx,buf);/GPVTG解析/GPS校验和计算/buf:数据缓存区首地址/len:数据长度/cka,ckb:两个校验结果.void

35、Ublox_CheckSum(u8 *buf,u16 len,u8* cka,u8*ckb)u16 i;*cka=0;*ckb=0;for(i=0;ilen;i+)*cka=*cka+bufi;*ckb=*ckb+*cka;/UBLOX 配置代码/检查CFG配置执行状况/返回值:0,ACK成功/ 1,接收超时错误/ 2,没有找到同步字符/ 3,接收到NACK应答u8 Ublox_Cfg_Ack_Check(void) u16 len=0,i;u8 rval=0;while(USART1_RX_STA&0X8000)=0 & len100)/等待接收到应答 len+;delay_ms(5); i

36、f(len250) /超时错误.len=USART1_RX_STA&0X7FFF;/此次接收到的数据长度 for(i=0;iheader=0X62B5;/cfg headercfg_cfg-id=0X0906;/cfg cfg idcfg_cfg-dlength=13;/数据区长度为13个字节. cfg_cfg-clearmask=0;/清除掩码为0cfg_cfg-savemask=0XFFFF; /保存掩码为0XFFFFcfg_cfg-loadmask=0; /加载掩码为0 cfg_cfg-devicemask=4; /保存在EEPROM里面 Ublox_CheckSum(u8*)(&cfg

37、_cfg-id),sizeof(_ublox_cfg_cfg)-4,&cfg_cfg-cka,&cfg_cfg-ckb);while(DMA1_Channel4-CNDTR!=0);/等待通道7传输完成 UART_DMA_Enable(DMA1_Channel4,sizeof(_ublox_cfg_cfg);/通过dma发送出去for(i=0;iheader=0X62B5;/cfg headercfg_msg-id=0X0106;/cfg msg idcfg_msg-dlength=8;/数据区长度为8个字节.cfg_msg-msgclass=0XF0; /NMEA消息cfg_msg-msgi

38、d=msgid; /要操作的NMEA消息条目cfg_msg-iicset=1; /默认开启cfg_msg-uart1set=uart1set; /开关设置cfg_msg-uart2set=1; /默认开启cfg_msg-usbset=1; /默认开启cfg_msg-spiset=1; /默认开启cfg_msg-ncset=1; /默认开启 Ublox_CheckSum(u8*)(&cfg_msg-id),sizeof(_ublox_cfg_msg)-4,&cfg_msg-cka,&cfg_msg-ckb);while(DMA1_Channel4-CNDTR!=0);/等待通道7传输完成 UAR

39、T_DMA_Enable(DMA1_Channel4,sizeof(_ublox_cfg_msg);/通过dma发送出去return Ublox_Cfg_Ack_Check();/配置NMEA输出信息格式/baudrate:波特率,4800/9600/19200/38400/57600/115200/230400 /返回值:0,执行成功;其他,执行失败(这里不会返回0了)u8 Ublox_Cfg_Prt(u32 baudrate)_ublox_cfg_prt *cfg_prt=(_ublox_cfg_prt *)USART1_TX_BUF;cfg_prt-header=0X62B5;/cfg

40、headercfg_prt-id=0X0006;/cfg prt idcfg_prt-dlength=20;/数据区长度为20个字节.cfg_prt-portid=1;/操作串口1cfg_prt-reserved=0; /保留字节,设置为0cfg_prt-txready=0; /TX Ready设置为0cfg_prt-mode=0X08D0; /8位,1个停止位,无校验位cfg_prt-baudrate=baudrate; /波特率设置cfg_prt-inprotomask=0X0007;/0+1+2cfg_prt-outprotomask=0X0007;/0+1+2 cfg_prt-rese

41、rved4=0; /保留字节,设置为0 cfg_prt-reserved5=0; /保留字节,设置为0 Ublox_CheckSum(u8*)(&cfg_prt-id),sizeof(_ublox_cfg_prt)-4,&cfg_prt-cka,&cfg_prt-ckb);while(DMA1_Channel4-CNDTR!=0);/等待通道7传输完成 UART_DMA_Enable(DMA1_Channel4,sizeof(_ublox_cfg_prt);/通过dma发送出去delay_ms(200);/等待发送完成 USART1_Init(baudrate);/重新初始化串口1 return Ublox_Cfg_Ack_Check();/这里不会反回0,由于UBLOX发回来的应答在串口重新初始化的时候已经被丢弃了. /配置UBLOX NEO-6的时钟脉冲输出/interval:脉冲间隔(us)/length:脉冲宽度(u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论