4559|2

12

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【Tiva C LaunchPad学习笔记】一步一步学会ESP8266(2) [复制链接]

本帖最后由 Zoro_ 于 2017-3-18 16:59 编辑




此内容由EEWORLD论坛网友Zoro_原创,如需转载或用于商业用途需征得作者同意并注明出处



在上一篇文章中,我们详细的介绍了如何通过串口工具控制ESP8266,实现了以模块作为客户端向局域网中的服务器发送信息的功能。这篇文章中我会分享如何通过Tiva C LaunchPad控制模块实现以上功能。

1.调试思路


通过串口工具控制模块的实质就是:以115200的波特率发送末尾有‘0x0a’‘0x0d’的AT指令,明白这一点后调试步骤就很明确了,首先通过单片机向串口助手发送相关指令,确认无误后,改为向模块发送即可。


2.通过单片机向串口助手发字符串



通过Tiva C LaunchPad向串口工具发字符串还是比较简单的,到处都是例程,但是大多都是通过UART0,由于Tiva C LaunchPad的UART0的接收和发送引脚(PA0和PA1)没有引出,所以我们必须使用其他串口,通过查阅Tiva C LaunchPad的引脚图(如图),我们看到,UART1的引脚引脚是PB0和PB1。

这俩个管脚引出了,所以我们可以使用UART1作为串口输出引脚。通过串口输出字符串有俩种方式,第一种是通过对函数UARTCharPut()进行“加工”处理,因为UARTCharPut()是不能直接发送字符串的,这点通过该函数的声明得出(如图)。

另一种方法比较简单,直接使用UARTprintf()函数即可,下面我们直接看这俩种方法的代码:
首先是使用UARTCharput()函数的:
  1. [/font]
  2. [font=Arial]#include <stdbool.h>
  3. #include <stdint.h>
  4. #include "inc/hw_ints.h"
  5. #include "inc/hw_memmap.h"
  6. #include "driverlib/gpio.h"
  7. #include "driverlib/interrupt.h"
  8. #include "driverlib/pin_map.h"
  9. #include "driverlib/pwm.h"
  10. #include "driverlib/sysctl.h"
  11. #include "driverlib/uart.h"
  12. #include "utils/uartstdio.h"
  13. #define DelayTime 30000000                    //宏定义延时时间
  14. void SendString(char *PString);               //发送字符串的函数,即AT指令
  15. void SendData(char *PData);                   //发送数据的指令
  16. int main(void)
  17. {
  18. SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);      //系统时钟配置
  19.     SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
  20.     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
  21.     GPIOPinConfigure(GPIO_PB0_U1RX);
  22.     GPIOPinConfigure(GPIO_PB1_U1TX);
  23.     GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);
  24.     UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 115200,
  25.         (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));        //配置串口
  26.     UARTIntEnable(UART1_BASE, UART_INT_RX);

  27.     SendString("AT+RST");                                                            //发送指令
  28.     SysCtlDelay(2*DelayTime);                                                        //延时,保证模块有足够时间响应
  29.     SendString("AT+CIPMUX=1");                                                   //发送指令
  30.     SysCtlDelay(2*DelayTime);
  31.     SendString("AT+CIPSTART=2,"TCP","192.168.4.2",8800");        //注意如何发送引号
  32.     SysCtlDelay(2*DelayTime);
  33.     while (1)
  34.    {
  35.      SendData("123");          //循环发送数据123
  36.    }
  37. }



  38. void SendString(char *PString)                                        //发送指令函数
  39. {
  40.         while(*PString)                                                                //没发送完就一直循环
  41.         {
  42. UARTCharPut(UART1_BASE,*PString);
  43. PString++;
  44.         }
  45.         UARTCharPut(UART1_BASE,0x0d);
  46.         UARTCharPut(UART1_BASE,0x0a);                                //字符串发送完后,发送0x0d 0x0a,相当于发送新行
  47. }



  48. void SendData(char *PData)
  49. {
  50.     SendString("AT+CIPSEND=2,5");         //发送指令,这个指令的意思是要发送5个字节
  51.     SysCtlDelay(DelayTime);
  52.         while(*PData)                                    //没发送完就一直发送
  53.         {
  54.                 UARTCharPut(UART1_BASE,*PData);
  55.                 PData++;
  56.         }
  57.         UARTCharPut(UART1_BASE,0x0d);
  58.         UARTCharPut(UART1_BASE,0x0a);    //发送0x0a,0x0d
  59.     SysCtlDelay(DelayTime);
  60. }[/font]

  61. [font=微软雅黑]
复制代码



将这段代码下载到开发板里,通过USB-ttl接到电脑上,可以通过串口工具检查字符串是否正确(图):

然后接上之前配置的模块,即可向电脑的服务器发送数据(如图):



接下来介绍另一种方法,即使用UARTprintf()函数,这个函数和C语言中的printf函数用法一样,发送指令“AT+CIPMUX=1”只需要UARTprintf(“AT+CIPMUX=1”);即可,可以参考上面的代码进行修改,需要注意的是使用这个函数需要头文件"utils/uartstdio.h",使用这个头文件还需要添加一个utils文件夹下的uartstdio.h文件(如图)



3.总结


通过这次分享,我们已经可以使用单片机向局域网中的服务器发送信息了,如果再接一个ADC采集数据,也算是实现了一个简单的物联网系统了吧,啊哈哈,是不是很开心的。下次分享如何用ESP8266连接正真的服务器。

最新回复

ADC好用吗?  详情 回复 发表于 2017-5-6 15:58
 
点赞 关注(1)

回复
举报

12

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
代码部分不太会弄格式,大家凑合着看……
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
ADC好用吗?
 
个人签名小店 https://shop226970498.taobao.com/
主营 Esp8266初级教程、源码等,适用于菜鸟
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表