STM32F103RC+ESP8266使用机智云的一些问题

STM32F103RC+ESP8266使用机智云

这里是问题的记录,想要看教程的朋友们请看我的另一篇文章 链接
最近学习STM32,学长和大佬建议我去学习一下ESP8266模块和机智云,于是开始摸索。在这里记录以下学习中遇到的一些问题,希望帮助得到大家。
在摸索的过程中主要遇到了以下几个问题

  1. 在向ESP8266烧写固件时,手头没有TLL转USB芯片
  2. 机智云官方没有针对STM32F103RC的相应MCU代码
  3. 官方提供了STM32F103C8x的代码包,但是使用了HAL库,没有学习过HAL库的渣渣表示一脸懵逼。
  4. 没有发现正点原子的教程,走了很多弯路。

固件烧写时遇到的问题

  1. 正点原子提供的烧录软件在我的电脑上闪退,只好从乐鑫官网重新下载
  2. 没有USB转TLL芯片,我一开始想将STM32当作USB转TLL芯片使用,于是编写了一个将USART1收到的数据原样转移到USART2的程序,烧录尝试好几次都是失败,RET无数次终于成功,也不知道有没有烧录成功,反正还没用到就用下一种方法重新烧写固件了。具体能否成功以后再试吧,到时候可能再写一篇文章(先挖个坑,以后再填)。
  3. 经朋友(@npuqiyi)提醒,使用正点原子板载的USB转TLL芯片,将原来连接RXD/TXD和PA8/PA9的跳线帽拔下来就能直接连接开发板上的CH340G
  4. 烧写时仍然有很多问题,有可能尝试很多次都是失败,而且成功烧录时间相当长(我玩了两局音游还没烧录完成),不过后面证明只要是烧录完成,确实是成功的

协议移植时遇到的问题

  1. 有些教程中说,从STM32F103C8的代码包开始移植,但是官方的代码包进行更新后使用了HAL库,对于已经学习过HAL库的人来说应该是一个好变换。但是博主渣渣并没有学习过HAL库,但是妄想将代码中有关HAL库的内容全部改写到标准库。于是便浪费了很多时间去逐个研读代码包,并且逐行修改代码,简直要命。
  2. 还是上面那位朋友,提醒我正点原子有相关的教程可以看,并且有例程,立刻给我指明了方向。在正点原子的教程中发现使用官方提供的“其他平台”代码包可以更加方便地进行移植,而且在其他平台的代码包里还有中文的移植说明,详细的说明了需要用户实现的部分和需要补充的部分。正点原子的教程和官方的手册结合就可以很好的完成移植。
  3. 移植需要完成的内容有:在这里插入图片描述
    • 串口2:与ESP8266通信的串口,波特率9600,开启接收中断,并在中断中调用gizPutData,将串口到的内容放入缓冲区,在uartWrite()中补充串口发送数组的代码,可以参考官方手册或正点原子教程
    • 串口1:完成printf函数,重定义fputc函数,将相关信息发送给电脑,方便调试
    • 定时器: 将一个定时器设定为1ms中断,在中断中调用gizTimerMs();该函数未在头文件中声明,需要我们在头文件中补上声明
    • 复位函数: mcuRestart()内编写STM32软件复位
    • 数据采集:在userHandle()中实现对数据的收集,并传输到currentDataPoint中
    • 动作执行:在gizwitsEventProcess()中执行相应的操作,如关闭/开启LED
    • 网络配置:在主函数中调用gizwitsSetMode()进入Airlink模式或其他模式
  4. 配置的时候出现了一个小问题,在配置串口时忘记初始化串口速度,导致无法对ESP8266发送正常的命令,所以最好还是从已经证明没有问题的工程中copy,或者仔细对照每个细节。

总结

  1. 整个学习下来感觉最重要的还是学会找资料,有正确的资料引导会使事情方便很多。
  2. 一定要仔细地对应每一个步骤,有可能整个程序混乱的原因只是一行代码而已。
  3. 想要简单省事,最好的办法是使用已经移植好的工程,将机智云官方下载来其他平台的Gizwits和Utils文件夹直接替换原有的文件夹,然后再更改userHandle()和gizwitsEventProcess()函数。
  4. 但是正点原子的源码是旧版本的机智云代码,需要进行一些修改,博主后续将上传适用正点原子STM32 mini开发板的工程,采用机智云官方的最新代码,需要的朋友们可以下载后将自己的gizwits和utils文件夹直接覆盖,更改userHandle()和gizwitsEventProcess()函数即可使用。
发布了2 篇原创文章 · 获赞 2 · 访问量 135

猜你喜欢

转载自blog.csdn.net/zhaogy2001/article/details/104301857