GPRS程序修改 优秀_第1页
GPRS程序修改 优秀_第2页
GPRS程序修改 优秀_第3页
GPRS程序修改 优秀_第4页
GPRS程序修改 优秀_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、/* 文件名:uart.c的头文件* 功能:作为uart.c的头文件,在程序调用的时候方便* 说明:无*/#define in_uart#include config.h /系统配置文件/* 名称:uartmode* 功能:uart0/uart1串口工作模式说明* 入口参数:无* 出口参数:无*/typedef struct uartmode uint8 datab; / 字长度,5/6/7/8 uint8 stopb; / 停止位,1/2 uint8 parity; / 奇偶校验位,0为无校验,1奇数校验,2为偶数校验 uartmode;/* 名称:uart_ini()* 功能:初始化uar

2、t0/uart1口* 入口参数:baud / uartmode* 出口参数:无*/extern uint8 uart_ini(uint32 baud, uartmode set);volatile uint8 rcv_new; / 接收新数据标志/* 名称:uart_sendstr()* 功能:uart0/uart1口发送程序* 入口参数:whichuart / *str / strlen* 出口参数:无*/extern void uart_sendstr(uint8 whichuart,uint8 *str,uint16 strlen);/* 名称:irq_uart0 / irq_uart1

3、* 功能:uart0和uart1的接收中断函数* 入口参数:无* 出口参数:无*/#define rcvbufsize0 20#define rcvbufsize1 20extern uint8 rcv_buf0rcvbufsize0; / *接收时可超越缓冲rcv_buf0数组界限,该缓冲能保存前n次未读取的数据。extern uint8 rcv_buf1rcvbufsize1; / *接受时可超越缓冲rcv_buf1数组界限,该缓冲能保存前n次未读取的数据。extern uint16 rcv_byte_num0;extern uint16 rcv_byte_num1;extern void

4、 _irq irq_uart0(void);extern void _irq irq_uart1(void);/* 名称:delayns()* 功能:长软件延时* 入口参数:dly延时参数,值越大,延时越久* 出口参数:无*/extern void delayns(uint32 dly);/* 名称:hc595_senddat()* 功能:向74hc595发送一字节数据* 入口参数:dat要发送的数据* 出口参数:无* 说明:发送数据时,高位先发送。*/extern void hc595_senddat(uint8 dat);/* 此表为0-f的字模 */const uint8 disp_ta

5、b16 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e ;/* 名称:led_show()* 功能:led1-led4显示相应的入口值(0-f)* 入口参数:i要显示的数据* 出口参数:无*/extern void led_show(uint8 i);/led流水灯 1-2-4-8-4-2-1extern void led_connecting(void);/* 名称:gprs_connection()* 功能:启动gprs服务* 入口参数:无* 出口参数:无*/extern

6、uint8 gprs_connection(void);/* 名称:gprs_apn()* 功能:设置移动apn接口并激活pdp移动场景* 入口参数:无* 出口参数:无*/extern uint8 gprs_apn(void);/* 名称:gprsserver_start()* 功能:与服务器连接、启动* 入口参数:无* 出口参数:无*/extern uint8 gprsserver_start(void);/* 名称:gprs_recever()* 功能:gprs模块接收server发送来的数据* 入口参数:无* 出口参数:无*/extern uint8 gprs_recever(void)

7、;/* 名称:gprs_send()* 功能:gprs模块发送来自pc的数据* 入口参数:无* 出口参数:无*/extern uint8 gprs_send(void);#endif/* 文件名:uart.c* 功能:是一些常用函数的集合* 说明:将跳线器jp4全部短接。*/#define in_uart#include config.h#define spi_cs(129)/* p0.29 */#define spi_data(16)/* p0.6 */#define spi_clk(14)/* p0.4 */#define spi_iocon(spi_cs|spi_data|spi_clk

8、)/* spi接口的i/o设置字 */#define led_iocon(0x0f115200) ) return(0); if( (set.datab8) ) return(0); if( (0=set.stopb)|(set.stopb2) ) return(0); if( set.parity4 ) return(0); /* 设置串口波特率 */ u0lcr = 0x80; / dlab位置1 u1lcr = 0x80; bak = (fpclk4)/baud; u0dlm = bak8; u1dlm = bak8; u0dll = bak&0xff; u1dll = bak&0xff

9、; /* 设置串口模式 */ bak = set.datab-5; / 设置字长度 if(2=set.stopb) bak |= 0x04; / 判断是否为2位停止位 if(0!=set.parity) set.parity = set.parity-1; bak |= 0x08; bak |= set.parity0; strlen-) u0thr = *str+; / 发送数据 while( (u0lsr&0x40)=0 ); / 等待数据发送完毕 else for(; strlen0; strlen-)u1thr = *str+; / 发送数据 while( (u1lsr&0x40)=0

10、 ); / 等待数据发送完毕/* 名称:irq_uart0 / irq_uart1* 功能:uart0和uart1的接收中断函数* 入口参数:无* 出口参数:无*/#define rcvbufsize0 20#define rcvbufsize1 20uint8 rcv_buf0rcvbufsize0; /接收时可超越缓冲rcv_buf0数组界限,该缓冲能保存前n次未读取的数据。uint8 rcv_buf1rcvbufsize1; /接受时可超越缓冲rcv_buf1数组界限,该缓冲能保存前n次未读取的数据。uint16 rcv_byte_num0;uint16 rcv_byte_num1;/*

11、 irq_uart0 */void _irq irq_uart0(void) uint8 i; uint8 int_type; int_type = u0iir&0x0f; if( int_type=0x04 ) for( i=0; i8; i+ ) rcv_buf0rcv_byte_num0 = u0rbr; rcv_byte_num0+; else if( int_type=0x0c ) rcv_buf0rcv_byte_num0 = u0rbr; rcv_byte_num0+; vicvectaddr = 0x00; / 中断处理结束/* irq_uart1 */void _irq ir

12、q_uart1(void) uint8 i; uint8 int_type; int_type = u1iir&0x0f; if( int_type=0x04 ) for( i=0; i0; dly-) for(i=0; i50000; i+);/* 名称:hc595_senddat()* 功能:向74hc595发送一字节数据* 入口参数:dat要发送的数据* 出口参数:无* 说明:发送数据时,高位先发送。*/void hc595_senddat(uint8 dat) uint8 i; io0clr = spi_cs; / spi_cs = 0 for(i=0; i8; i+)/ 发送8位数据

13、 io0clr = spi_clk;/ spi_clk = 0/* 设置spi的data输出值 */ if( (dat&0x80)!=0 ) io0set = spi_data; else io0clr = spi_data; dat = 1; io0set = spi_clk;/ spi_clk = 1 io0set = spi_cs; / spi_cs = 1,输出显示数据/* 名称:led_show()* 功能:led1-led4显示相应的入口值(0-f)* 入口参数:i要显示的数据* 出口参数:无*/void led_show(uint8 i) io0set = 0x0f22; io0

14、clr = i22;/ 设置led显示输出void led_connecting(void) /led流水灯 1-2-4-8-4-2-1led_show(1);delayns(15);led_show(2);delayns(15);led_show(4);delayns(15);led_show(8);delayns(15);led_show(4);delayns(15);led_show(2);delayns(15); void led_send(void) /led流水灯 1-2-4-8led_show(1);delayns(15);led_show(2);delayns(15);led_

15、show(4);delayns(15);led_show(8);delayns(15);void led_recever(void) /led流水灯 8-4-2-1led_show(8);delayns(15);led_show(4);delayns(15);led_show(2);delayns(15);led_show(1);delayns(15);/* 名称:gprs_connection()* 功能:启动gprs服务* 入口参数:无* 出口参数:无*/uint8 gprs_connection(void)uint8 i,j,n;uint8 ret=0;uint8 rcvdata20;u

16、int8 cgatt12=65,84,43,67,71,65,84,84,61,49,13,10;for(n=0;n5;n+) led_connecting(); for (i=0;i 0)uart_sendstr(0,rcv_buf1,rcv_byte_num1); for(j=0; jrcv_byte_num1; j+)rcvdataj=rcv_buf1j;rcv_byte_num1 = 0;if (j=19 & rcvdata0=13 & rcvdata1=10 & rcvdata2=79 & rcvdata3=75)ret=1;break;return(ret); /* 名称:gprs

17、_apn()* 功能:设置移动apn接口并激活pdp移动场景* 入口参数:无* 出口参数:无*/uint8 gprs_apn(void)uint8 i,j,k,m;uint8 ret=0;uint8 rcvdata20;uint8 rcvdata120;uint8 cgdcont27=65,84,43,67,71,68,67,79,78,84,61,49,44,34,73,80,34,44,34,67,77,78,69,84,34,13,10;uint8 cgact14=65,84,43,67,71,65,67,84,61,49,44,49,13,10;uart_sendstr(1,cgdco

18、nt,27);hc595_senddat(0xa4);led_connecting();for(m=0;m 0)for(i=0; ircv_byte_num1; i+)rcvdatai=rcv_buf1i;rcv_byte_num1 = 0;for (j=0;j 0)uart_sendstr(0,rcv_buf1,rcv_byte_num1);for(k=0; krcv_byte_num1; k+)rcvdata1k=rcv_buf1k;rcv_byte_num1 = 0;if (k=6 & rcvdata10=13 & rcvdata11=10 & rcvdata12=79 & rcvdat

19、a13=75)ret=1;break;return(ret); /* 名称:gprsserver_start()* 功能:与服务器连接、启动* 入口参数:无* 出口参数:无*/uint8 gprsserver_start(void)uint8 i,j,k;uint8 ret=0;uint8 rcvdata20;uint8 rcvdata120;uint8 sdataconf42=65,84,43,83,68,65,84,65,67,79,78,70,61,49,44,34,84,67,80,34,44,34,54,49,46,49,56,53,46,49,53,54,46,53,34,44,5

20、0,48,50,48,13,10; /61.185.156.5:2020uint8 sdatastart19=65,84,43,83,68,65,84,65,83,84,65,82,84,61,49,44,49,13,10;for (i=0;i 0)for(j=0; j 0)uart_sendstr(0,rcv_buf1,rcv_byte_num1);/testfor(k=0; k 0)rcv_byte_num1 = 0;uart_sendstr(1,sdataread,16); /readdelayns(50);if (rcv_byte_num1 0)i=rcv_byte_num1-19;f

21、or(j=0; j2)uart_sendstr(0,rcvdata,i);rcv_byte_num1 = 0;ret=1;return(ret); /* 名称:gprs_send()* 功能:gprs模块发送来自arm的数据* 入口参数:无* 出口参数:无*/uint8 gprs_send(void)uint8 i,j;uint8 ret=0;uint8 rcvdata1000;uint8 rcvuart01000;uint8 sdatarxmd_hex20=65,84,43,83,68,65,84,65,82,88,77,68,61,49,44,48,44,48,13,10;uint8 sd

22、atasend18=65,84,43,83,68,65,84,65,83,69,78,68,61,49,44,50,13,10;uart_sendstr(1,sdatarxmd_hex,20);delayns(8);if (rcv_byte_num1 0)rcv_byte_num1 = 0;if(rcv_byte_num0 0)for(i=0;i 0)for(j=0; j0) uart_sendstr(1,rcvuart0,i+1);delayns(8);if (rcv_byte_num1 0)uart_sendstr(0,rcv_buf1,rcv_byte_num1);/testrcv_by

23、te_num1 = 0;return(ret); /* 文件名:gprs_test.c* 功能:主函数主要实现arm收发数据、gprs模块收发数据* 说明:将跳线器jp4全部短接。*/#include config.h#include uart.h#define spi_cs (129) /* p0.29 */ #define spi_data (16) /* p0.6 */#define spi_clk (14) /* p0.4 */#define spi_iocon (spi_cs|spi_data|spi_clk) /* spi接口的i/o设置字 */#define led_iocon

24、(0x0f22) /* led1-4的i/o设置字 */ void _irq irq_uart0(void);void _irq irq_uart1(void);/* 名称:main()* 功能:主函数主要实现arm收发数据、gprs模块收发数据* 参数:无* 说明:无 */int main(void) uint8 look;uartmode uart_set; /uart0/uart1串口模式rcv_byte_num0 = 0; /初始化全局变量rcv_byte_num1 = 0;pinsel0 = 0x00000000; / 设置所有管脚连接gpiopinsel1 = 0x00000000;/*初始化uart0/uart1*/uart_set.datab = 8; / 8位数据位uart_set.stopb = 1; / 1位停止位uart_set.parity = 0; / 无奇偶校验uart_ini(115200, uart_set); / 初始化串口模式 band 115200io0dir = spi_iocon|led_iocon; / 设置spi、lled、beep、等控制口为输出u0fcr = 0x81; / uart0 使能fifou1f

温馨提示

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

评论

0/150

提交评论