高中生
最后登录1970-1-1
在线时间 小时
注册时间2016-1-17
|
楼主 |
发表于 2016-1-20 15:25:56
|
显示全部楼层
本帖最后由 探索者丸丸号 于 2016-1-20 15:30 编辑
(1)用了几天时间终于弄好了;现在可以用gsm发送gps的经纬度。昨天查了ffconf.h文件的作用,发现它类似stm32f10x.conf.h的作用,用于管理文件系统的各文件区的是否调用。比如要用到cc936.c,这是一个对中文提供支持的文件,假如要用到,就要修改ffconf.h文件中code.page的声明的对应数值,查看他下面可以看见他允许的数值对应支持的语言。然后其中有len与maxlen的声明,主要是对长文件头允许字节数的定义。gps上的ff9也有相似之处。而且假如两个文件同时在一个工程,会让工程过大,有内存溢出危险。以上是对ff9文件的主要了解;
(2)然后因为我们是只需要发送经纬度,这类数值数据,不需要用到中文支持,所以我将工程里面的ff9文件删除。然后在sim900a.c文件中只需要保留void sim900a_sms(char *num,char *smstext)这个函数,然后函数内部有对短信内容是否是纯ascii码的判断,这个可以去掉,中文处理部分也可以去掉(这样做对应我们删掉ff9这个工程的文件),直接只保留对英文处理的部分,这样短信内容就只允许发送英文(数值包括其中),符合我们的要求。然后还有一些细节的修改。
巴拉巴拉。。。。。。
(3)A:修改后我们使用usart3,以DMA方式接受gps传过来的经纬度数据,其中用zaishichua,和zaishichub两个外部变量储存经纬度作为gsm的短信内容。这过程由于gsm是发送字符串,而gps传来的经纬度是数值double型。可以利用sprintf函数对数值类型进行转换。
B:而用USart2,用中断发送方式给串口发送数据(gsm短信内容);
C:我保留了USart1,可以用电脑上gps的多功能调试助手显示此时对应的定位经纬度信息,假如不用可以自行删减。
(4)其中还有一些细节,如修改串口后,.h文件的一些修改(注意他们);堆栈的分配好像也要修改,我是改大200个单元;中断服务函数...it.c内的修改等等,其他的不说了,直接上代码(本人菜鸟,如有错漏望原谅)。
|
-
-
改好.zip
115.06 KB, 下载次数: 175
工程的启动文件还有外设驱动文件就自己添加,他们太大无法上传
|