收藏官网首页
查看: 1803|回复: 0

使用MCU代码自动生成工具生成工程

发表于 2017-5-15 14:07:11 | 显示全部楼层 |阅读模式
汉枫LPB120模块
本帖最后由 Genius 于 2017-5-23 17:01 编辑

自动生成MCU SDK

接下来,使用机智云MCU代码自动生成工具,能根据产品自动填写ProductKey,根据相应数据点来自动生成数据点的结构体,直接生成多种平台、多种系列MCU的工程。

自动生成的MCU SDK代码实现了机智云通信协议的解析与封包、传感器数据与通信数据的转换逻辑,并封装成了简单的 API。当设备收到云端或 APP 端的数据后,程序会将数据转换成对应的事件并通知到应用层,开发者只需要在对应的事件处理逻辑中添加传感器的控制函数,便可完成产品的开发。

这里选择独立MCU方案、硬件平台STM32F767X后,机智云直接生成适用于STM32F767Xkeil工程代码,采用的库函数为HAL库。
8.png

9.png

MCU SDK代码结构介绍

下载生成的MCU代码,解压后,结构如下图:
11.png
其中有些文件是与特定MCU、特定IDE有关的,Gizwits目录的2个文件Gizwits_protocol.cGizwits_protocol.h则属于与硬件平台无关的通信协议层。我们需要添加的温湿度传感器DHT11驱动、空气质量传感器MQ-135驱动、直流小电机驱动就可以放到Hal文件夹,便于管理。

接口介绍
  文件
  
  说明
  
  Gizwits_product.c
  
  
该文件为产品相关处理函数——数据点事件处理逻辑,如收到APP等的指令后去启动电机,就把启动电机的代码填充到gizwitsEventProcess()函数里面对应的注释处;另外还有MCU平台相关硬件初始化,如串口、定时器等。
  
  Gizwits_product.h
  
  
该文件为gizwits_product.c的头文件,存放产品相关宏定义如:HARDWARE_VERSION、SOFTWARE_VERSION
  
  Gizwits_protocol.c
  
  
该文件为SDK API接口函数定义文件。
  
  Gizwits_protocol.h
  
  
该文件为gizwits_protocol.c对应头文件,相关API的接口**均在此文件中。
  

协议API介绍
  API名称
  
  API功能
  
  
Void  gizwitsInit(void)
  
  
gizwits 协议初始化接口。用户调用该接口可以完成 Gizwits 协议相关初始化(包括协议相关定时器、串口的初始化)。
  
  
Void  gizwitsSetMode(unit8_t mode)
  
  
参数mode[in]:仅支持0,1和2,其他数据无效。参数为 0,恢复模组出厂配置接口,调用会清空所有配置参数,恢复到出厂默认配置; 参数为 1 时配置模组进入  SoftAp 模式; 参数为 2 配置模组进入  AirLink 模式。
  
  Void gizwitsHandle(dataPoint_t *dataPoint)
  
  参数 dataPoint[in]:用户设备数据点。该函数中完成了相应协议数据的处理即数据上报的等相关操作。
  
  Int8_t gizwitsEventProcess (eventInfo_t *info,uint8_t  *data,uint32_t len)
  
  参数 info[in]:事件队列参数 ; data[in]:数据; 参数 len [in]:数据长度。用户数据处理函数,包括 wifi 状态更新事件和控制事件。a) Wifi 状态更新事件WIFI_开头的事件为 wifi 状态更新事件,data 参数仅在WIFI_RSSI 有效,data 值为 RSSI 值,数据类型为  uint8_t,取值范围 0~7。 b) 控制事件与数据点相关,本版本代码会打印相关事件信息,相关数值也一并打印输出,用户只需要做命令的具体执行即可。
Gizwits_product.c里面有几个函数: gizwitsInit()gizwitsSetMode()gizwitsHandle()需要在main函数里面调用的;

关键函数说明:
函数 -说明                                                                        
  • userInit()   ——用户相关的初始化,如:外设驱动初始化、打印串口初始化(建议用户把自己的硬件驱动放这里面,本项目将把温湿度传感器驱动、空气质量传感器驱动、直流小电机驱动放里面)。
  • gizwitsInit()  —— 平台、协议处理初始化,如:用户定时器初始化、协议通信串口初始化(MCU SDK API)
  • userHandle() ——用户事件回调函数,用户可以自定义事件在该函数中完成相应的协议处理。(用户需要把自己需要上报到云服务器的数据放里面,根据生成的注释填充即可)。
  • gizwitsHandle()  —— 协议相关的主函数(MCU SDK API),在While-Loop调用。
33.jpg
  从中可以看出整个程序处理的流程,用户只需要做微小的修改即可应用在自己的STM32上,本次也是需要做微小修改的,因为生成的工程使用的是正点原子的STM32F767阿波罗开发板,而我们本项目使用的板卡是官方ST出品的Nucleo-F767ZI板卡,两者调试用使用的串口不同,按键引脚等都是不同的,而且生成的工程是没有传感器驱动的,只是一个框架,需要我们去填充。
      下图是MCU通过烧录好GAgent固件的WIFI/GPRS模组与服务器交互的逻辑,可以看出整个过程全部被封装,留给用户的接口很简单,对于资源足够的MCU,用户只需要在MCU实现3个接口函数即串口发送、串口中断接收、定时器1ms中断即可通过无线通信模组联网,十分方便移植到其它的MCU。而数据点相关、云端交互相关全部由MCU代码自动生成工具生成,只需在Gizwits_product.c文件填充业务逻辑。
44.png


基于机智云的智能硬件开发流程:创建产品及数据点、设备与应用开发、调试产品、申请发布、正式量产。

本系列帖子目录:
http://club.gizwits.com/thread-6544-1-1.html

1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /6 下一条

QQ|加入QQ群

© 2011-2016 Gizwits ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表