Genius 发表于 2017-4-19 11:36:46

MCU代码自动生成之 MSP430平台的移植

本帖最后由 Genius 于 2017-4-19 14:02 编辑

通用平台版代码移植说明1.文件介绍http://docs.gizwits.com/assets/zh-cn/deviceDev/DevSDK/common/image6.png重要文件解读:
[*]gizwits_product.c
该文件为产品相关处理函数,如gizwitsEventProcess()。
[*]gizwits_product.h
该文件为gizwits_product.c的头文件,如HARDWARE_VERSION、SOFTWARE_VERSION。
[*]gizwits_protocol.c
该文件为SDK API接口函数定义文件。
[*]gizwits_protocol.h
该文件为gizwits_protocol.c对应头文件,相关API的接口**均在此文件中。
[*]其他文件
a) User/main.c
MCU程序入口函数所在文件,入口函数为main(void)。
2.API介绍· void giz witsInit (void)gizwits协议初始化接口。用户调用该接口可以完成Gizwits协议相关初始化(包括协议相关定时器、串口的初始化)。· void gizwitsSetMode (uint8_t mode)参数mode:仅支持0,1和2,其他数据无效。参数为0,恢复模组出厂配置接口,调用会清空所有配置参数,恢复到出厂默认配置。参数为1或2,配置模式切换接口,支持SoftAP和AirLink模式。参数为1时配置模组进入SoftAp模式,参数为2配置模组进入AirLink模式。· void gizwitsHandle(dataPoint_t *dataPoint)参数dataPoint:用户设备数据点。该函数中完成了相应协议数据的处理即数据上报的等相关操作。· int8_t gizwitsEventProcess(eventInfo_t info, uint8_t data, uint32_t len)参数info:事件队列参数data:数据参数len :数据长度用户数据处理函数,包括wifi状态更新事件和控制事件。a). Wifi状态更新事件WIFI_开头的事件为wifi状态更新事件,data参数仅在WIFI_RSSI有效,data值为RSSI值,数据类型为uint8_t,取值范围0~7。b). 控制事件与数据点相关,本版本代码会打印相关事件信息,相关数值也一并打印输出,用户只需要做命令的具体执行即可。3.代码结构说明自动化代码生成工具已经根据用户定义的产品数据点信息,生成了对应的机智云串口协议层代码,用户需要移植代码到自己的工程中,完成设备的接入工作。如图如下:http://docs.gizwits.com/assets/zh-cn/deviceDev/DevSDK/common/image7.png代码绿色部分的协议逻辑和程序主流程已经帮用户实现,图中用黄色字体注标的部分待用户实现并完成代码的移植。用户的移植分以下几步进行:a.搭建最小平台工程(必要)。b.实现串口驱动(必要):包括通信与打印功能。c.实现定时器驱动(必要)。d.实现芯片复位函数(可选)。e.实现应用层逻辑开发(必要):包括数据上下行、入网配置等。移植步骤介绍下面我们以 MSP430平台的移植 为例来介绍移植步骤。1.搭建最小平台工程(必要)首先完成目标平台的最小工程搭建,以MSP430为例,我们将通信协议处理的源码文件(Gizwits目录下所有文件)导入到工程中,并将 User目录 下的示例 main.c 文件整合到工程中的主文件中。
2.实现串口驱动(必要)MCU方案需要用户实现一个串口,用于设备MCU与WIFI模组之间数据通信。用户首先需要实现串口接收中断服务函数接口UART_IRQ_FUN(MSP430平台函数接口为:USCI0RX_ISR),该接口调用gizPutData()函数实现串口数据的接收并且写入协议层数据缓冲区。
3.实现定时器驱动(必要)协议层使用到了一个系统时间,该事件单位为毫秒,所以要求用户实现一个毫秒定时器(必须是1ms精确定时,若不准确,会影响到超时重发、定时上报等处理),并且实现中断服务函数TIMER_IRQ_FUN(MSP430平台函数接口为:Timer_A),该函数调用gizTimerMs()实现协议层系统时间的维护。
4.实现芯片复位(可选)根据串口协议文档规定,模组可以发送命令复位设备MCU,所以用户需要实现 gizwits_product.c中的mcuRestart()接口即可
5.应用逻辑开发5.1.数据下行控制数据点方式将转换成数据点事件,开发者只需要在 gizwits_product. c 文件的gizwitsEventProcess ()相应事件下作具体处理即可。5.2.数据上行控制该工程代码默认在userHandle()中实现传感器数据采集,并且该函数在while中循环执行,原则上用户只需要关心如何采集数据。特别提醒,默认while循环执行速度较快,需要针对不同的需求,用户可调整数据点数据的采集周期和接口实现位置,预防由于传感器数据采集过快引发的不必要的问题(具体可查看STM32 的详解篇)。
5.3.配置入网功能(必要)根据串口协议文档规定,MCU可以向模组发送命令使其进入相应的配置模式,所以用户可以调用gizwitsSetMode接口(在 gizwits_protocol.c 中)完成相应的操作(例如按键控制)
5.4.实现模组状态处理功能(可选)开发者可以在 gizwits_product. c 文件的 gizwitsEventProcess()函数内获得WIFI状态,并做相应的逻辑处理。

具体参考:http://docs.gizwits.com/zh-cn/deviceDev/GoKit3%20DEV%20SDK%20Common%E7%89%88%E7%A7%BB%E6%A4%8D%E8%AF%B4%E6%98%8E.html


更多模块化开发工具,提升开发效率:
标准GAgent串口通讯协议
MCU代码自动生成工具
APP代码自动生成工具
自动化产测工具
OTA固件升级
国际版应用邮件模板
产品互联(Echo接入等)
Snoti服务
企业API、OPEN API
RTDB实时大数据统计




页: [1]
查看完整版本: MCU代码自动生成之 MSP430平台的移植