STM32与机智云连接实现步骤与技巧(下篇):机智云代码移植与优化

描述



 

在《STM32与机智云连接实现步骤与技巧(上篇)》中,我们介绍了硬件连接和通信协议配置。本篇将重点讲解如何将机智云相关代码移植到STM32,完成数据上传和设备控制。我们将介绍如何在STM32中配置机智云SDK,集成API,实现数据传输和设备状态同步,并分享移植过程中的常见问题及解决方法,帮助开发者顺利实现云端连接。


 


机智云相关代码开始移植


 

相关移植步骤


 

1、实现与模组通信串口驱动


 

2、实现串口打印函数printf();


 

3、实现1ms定时器,gizTimerMs()维护系统时间 (提供时基)


 

4、实现MCU复位函数,模组可请求MCU复位


 

5、实现配置入网功能,调用gizwitsSetMode()函数实现模组配网功能


 

6、实现userHandle()数据的采集(上行逻辑)


 

7、实现 gizwitsEventProcess()控制命令的具体执行(下行逻辑)


 

1、WIFI串口接收数据写入缓冲区


 

串口包含这个机智云的头文件


 




STM32

2、实现uartWrite()串口发送数据


 

在该文件中找到uartWrite()这个函数,并在给文件上方添加所用串口的.h文件


 




STM32

该函数修改为

(代码部分请点击文末查看原文以获取详细内容)
 

实现毫秒定时


 

对于使用的定时器4,中断里添加相应代码

(代码部分请点击文末查看原文以获取详细内容)
 


 

编译会出现警告,找不到该函数,gizTimerMs();函数没有定义,在gizwits_product.h文件中进行定义。


 

实现芯片复位函数


 

修改该函数在gizwits_product.h文件中


 




STM32

改为下边的代码

(代码部分点击查看原文进行查阅)

实现配置入网STM32


 

模组支持 SoftAp 和 AirLink 两种方式配置入网, 相应接口为 gizwitsSetMode(), 三种模式如下:

WIFI_RESET_MODE 恢复默认出厂设置

WIFI_SOFTAP_MODE 热点配网

WIFI_AIRLINK_MODE 手机广播配网

在此之前主函数中添加头文件


 




STM32STM32

以及初始化


 




STM32STM32


STM32STM32

添加机智云初始化代码,本次选择了airlink配网模式

(代码部分点击查看原文进行查阅)


 


 


协议处理STM32


 

根据采集到的数据,然后调用函数 gizwitsHandle()、userHandle()上报,函数位置在gizwits_protocol.c文件中,该函数主要完成协议数据的处理及数据主动上报的相关操作,到这一步,配网就结束了,接下来开始配置自己需要传输的数据。

(代码部分请点击文末查看原文以获取详细内容)


 


数据上下发配置STM32


 

上发数据用到的函数为userHandle(),这个函数是在gizwits_protocol.c中


 

如图,本设计一开始将参数都初始化为0


 




STM32STM32

采集数据的函数


 




STM32STM32

该函数中内容作为机智云app下发数据


 




STM32STM32
实验现象STM32


 




STM32STM32


STM32STM32


 


WIFI连接出现的问题STM32


 

出现timeout超时,可能原因是主函数中给了延时函数,可以尝试屏蔽掉。如果出现连接数据传输不稳定,WIFI连接容易掉,可以尝试一下。


 

注释掉箭头指向的这三行


 




STM32STM32

并且把这个语句能搜索到的全部注释掉,可以ctrl+f 搜索都在这两个文件中。


 

这个主要是串口1打印内容(gizwits_product.c,gizwits_protocol.c)


 




STM32STM32


STM32STM32

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分