512826028

个性签名:朱志强

    1. 大家有什么好的方法没有呀?
    2. sint27 发表于 2015-1-23 17:35 我翻了一下AT指令,ATE0是表示取消回显吧,这样你就得不到OK了,你可以试下ATE0改成AT
             ATE0 是取消回显,意思是什么都不要,只要显示0K。、       例如: 原来指令是  AT                串口得到的是 AT                                      0K                发送了指令  ATE0                串口得到的  ATE0                                   OK                再发送指令  AT      串口就直接得到     OK(第一次的回显 AT指令那一行不见了)。
    3. 很让人郁闷的一个问题啊。。。 如果第一次发送AT,第二次发送ATE0指令,程序可以执行完第一个(AT),到了第二个指令时,就卡住了。 如果第一次发送ATE0,第二次发送AT指令,程序也是可以执行完第一个(ATE0),卡在第二个指令上。 我看别人的程序,连续发送,中间就隔了个3秒而已,没有其他的操作了。我中间也加上延时,还是不管用。
    4. sint27 发表于 2015-1-23 17:05 是时候亮出你的代码了,show me the code
      还需要别的代码吗?我贴上 /******************************************************************************* *描    述: 此文件包含操作GSM的所有函数 *GSM 模块:SIM900A *控制芯片:MSP430F149 * *******************************************************************************/ #include "include.h" extern uchar USART1BUFF[];//重新声明一下其他函数中定义的USART1BUFF数组 extern void UART_Clear_BUFF(void); //外部声明过的函数 0 UART1,1 UART2,str为字符串指针 extern void UART_PutStr(uchar uartx, char *str); extern void UART_PutChar(uchar uartx, char ch); extern void DelayNms(unsigned char n); extern void DelayNs(unsigned char n); extern void led(int i); extern void GPIO_OUT(uchar px, uchar data8); extern void UART_Init(uchar uartx); char *ATE0="ATE0\r\n\r\n";//清除GSM模块回显 /******************************************************************************* *SIM900初始化函数 * *返回值:无 *测试通过时间:2015年1月22日22:58:54 *******************************************************************************/ void SIM900(void) {     UART_Clear_BUFF();     UART_PutStr(0,"AT\r\n\r\n");     while(strstr((char const*)USART1BUFF,"OK")==NULL)     {         UART_Clear_BUFF();         led(2);         //注意:此处必须为\R\N\R\N!!!         UART_PutStr(0,"AT\r\n\r\n");     }     GPIO_OUT(P2,0Xf7);//点亮一个LED灯,代表握手成功        UART_Clear_BUFF();     UART_PutStr(0,"ATE0\r\n\r\n");     while(strstr((char const*)USART1BUFF,"OK")==NULL)     {         UART_Clear_BUFF();         led(4);         //注意:此处必须为\R\N\R\N!!!         UART_PutStr(0,"ATE0\r\n\r\n");     }     GPIO_OUT(P2,0Xfe);//点亮一个LED灯,代表握手成功 }复制代码 主程序里面,没有什么东西,就是一个单独的SIM900程序。 int main( void ) {     // Stop watchdog timer to prevent time out reset     WDTCTL = WDTPW + WDTHOLD;        uchar i;         WDTCTL = WDTPW + WDTHOLD;           //关狗     /*------选择系统主时钟为8MHz-------*/     BCSCTL1 &= ~XT2OFF;                 //打开XT2高频晶体振荡器     do     {         IFG1 &= ~OFIFG;                 //清除晶振失败标志         for (i = 0xFF; i > 0; i--);     //等待8MHz晶体起振     }     while ((IFG1 & OFIFG));             //晶振失效标志仍然存在?     BCSCTL2 |= SELM_2 + SELS;           //MCLK和SMCLK选择高频晶振             //计数时钟选择SMLK=8MHz,1/8分频后为1MHz     TACTL |= TASSEL_2 + ID_3;        GPIO_Init(P2,DIR_OUTPUT);  //设置P2为输出模式           UART_Init(0);         //打开全局中断     _EINT();     //while(1);         /******************************     此部分,已调试成功     2015年1月22日22:39:52     while(strstr((char const*)USART1BUFF,"OK")==NULL)     {         //uchar  ii;         UART_Clear_BUFF();         led(2);         UART_PutStr(0,"ATE0\r\n\r\n");              }             ********************************/      SIM900();      while(1); }复制代码
    5. 一开始,在网上搜了好久,连第一个握手都很难完成。 网上有人说单片机是3.3V的,模块是3.5-5V的,串口的电平不兼容。我是直接用的TTL直连,中间也没有用232电平转换芯片。 当时从网上看到,有一种简易的电平转换,就是用一个三极管,自己也就动手做了一个,没有什么效果,还是不能握手成功。 后来,偶然一个想法,就是修改了一下程序,在后面多了一个“\r\n”,结果,程序就可以握手成功了。就是上面程序中看到的这个样子了。 然后,我就再添加第二条指令,但是,程序每次都只是执行完成第一个,到了第二条指令,就陷入死循环,那个LED就闪个没完。把两条指令反过来,还是只能执行第一条,到了第二条就卡住了。 只是百思不得其解,不知道问题究竟出在哪里了。
    6. void SIM900(void) {     UART_Clear_BUFF();     UART_PutStr(0,"AT\r\n\r\n");     while(strstr((char const*)USART1BUFF,"OK")==NULL)     {         UART_Clear_BUFF();         led(2);         //注意:此处必须为\R\N\R\N!!!         UART_PutStr(0,"AT\r\n\r\n");     }     GPIO_OUT(P2,0Xf7);//点亮一个LED灯,代表握手成功        UART_Clear_BUFF();     UART_PutStr(0,"ATE0\r\n\r\n");     while(strstr((char const*)USART1BUFF,"OK")==NULL)     {         UART_Clear_BUFF();         led(4);         //注意:此处必须为\R\N\R\N!!!         UART_PutStr(0,"ATE0\r\n\r\n");     }     GPIO_OUT(P2,0Xfe);//点亮一个LED灯,代表握手成功 }复制代码 程序部分,应该没有问题,因为单独都可以握手成功。唯独就是这样,两个顺序放一块,就不能继续运行了。
    7. 程序中 单片机单独发送  AT指令,可以得到OK答复,单片机点亮第一个LED灯。 单片机单独发送ATE0指令,也可以得到OK答复,单片机点亮另一个LED灯。 但是,如果让单片机按顺序,先发送AT指令,等到OK后,在发送ATE0指令,就不能继续运行了,第二个LED就一直都点不亮了。
    8. 秀一秀你焊过的最变态的电路板 73/20446 PCB设计 2012-12-11
      这个是我弄POV LED灯时候的,为了省材料同时减轻重量,弄了一小条洞洞板,在上面放了二十多个电阻和LED灯,同时,用细的绝缘铜丝(从小电机里面拆出来的)连接到单片机对应的IO口上去。手机拍的,不清晰。嘿嘿
    9. 这个真的是好东西啊。我直接竟然看不懂耶。看样子需要学习的东西真的是太多了呢。
    10. 大家都用哪个pcb layout软件(多选) 95/49313 PCB设计 2012-12-11
      原帖由 hhy 于 2009-11-28 09:01 发表 [url=https://bbs.eeworld.com.cn/redirect.php?goto=findpost&pid=276302&ptid=74400][/url] CADSTAR
         这图片里面的电路,怎么都是90°的拐角啊。专门设置的吗?
    11. 支持一下帖子,我也感觉风格挺好的,不过也想知道用什么软件画出来的。
    12. 发些霸气的电路图和pcb 6/3530 PCB设计 2012-12-11
      使用什么软件画的呢?
    13. OMNINET For Windows有人要吗? 16/14005 FPGA/CPLD 2012-04-10
      我想知道这个东西怎么使用呢? 我真的不想挖坟的。
    14. 咋不见有人玩UCOS-III呢? 15/23148 实时操作系统RTOS 2012-01-27
      围观一下吧。。。。应该以后会流行的。
    15. 楼主,群满了啊。。。 我也想进入啊。。。。
    16. 太感谢楼主了。群满了。。。
    17. 倾力奉献——uCOS-IIv2.52源码中文译注 35/9290 实时操作系统RTOS 2012-01-27
      谢谢楼主了:)
    18. 一步一步教你使用uCOS-II 820/645224 实时操作系统RTOS 2012-01-27
      我用了一会,就移植成功了。 是我现在对uCOS有了很大的信心。 非常感谢楼主!:rose: :rose: :rose:
    19. ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 (3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 (4)兴趣所在,这是最主要的。 从事嵌入式软件开发的缺点是: (1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 (2)这方面的企业数量要远少于企业计算类企业。 (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。 (4)平台依托强,换平台比较辛苦。 兴趣的由来: 1、成功观念不同,不虚度此生, 2、喜欢思考,挑战逻辑思维。 3、喜欢C C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下: 相信程序员。 不要阻止程序员做那些需要去做的。 保持语言短小精干。 一种方法做一个操作。 使得它运行的够快,尽管它并不能保证将是可移植的。 4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。 5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。 方法步骤: 1、基础知识: 目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件, 科目:数字电路、计算机组成原理、嵌入式微处理器结构。 汇编语言、C/C++、编译原理、离散数学。 数据结构和算法、操作系统、软件工程、网络、数据库。 方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。 2、学习linux: 目的:深入掌握linux系统。    方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。 主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 3、学习嵌入式linux: 目的:掌握嵌入式处理器其及系统。 方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。    (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。    (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。    主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 4、深入学习:    A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。    B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。    C、网络与信息安全技术:如加密技术,数字证书CA等。    D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。    说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。    注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。    不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!    技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。
    20. 嵌入式linux系统开发和入门笔记 71/16600 Linux开发 2011-06-29
      顶一下,是好东西

最近访客

< 1/1 >

统计信息

已有94人来访过

  • 芯积分:--
  • 好友:--
  • 主题:1
  • 回复:20

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言