李~ 发表于 2016-7-29 18:22:03

基于ESP8266-12F+STM32F103C8T6植物宝_cubemx工程创建与Gokit代码移植

本帖最后由 李~ 于 2016-7-29 18:23 编辑

本帖为基于ESP8266-12F+STM32F103C8T6植物宝的第3贴,主要分享:
使用cubemx创建工程和Gokit代码移植过程
cubemx是ST公司推出的一款辅助开发工具,基于ST新推出的HAL库,开发过程十分简单,这里因为使用了ESP8266-12F作为透传模块,所以MCU部分的代码移植,实际上就是Gokit代码协议的移植,根本上是ST标注库到HAL库串口收发部分函数的处理,因此并不复杂。
代码链接:http://pan.baidu.com/s/1bp4xy4R
开发环境:cubemx 4.15 +keil 5.20
1、项目组成:本项目使用了freertos,一共创建了4个任务,其中GizwitsTask用于机智云指令解析和传感器数据上报,也就是对应原代码里面main函数中while(1){}里面的代码;




除cubeMX生成的代码外,还应该包含有机智云通信协议代码,放在“Protocol”文件夹下:


2、代码移植
因为使用的是“MCU+WIFI模组”的方式,WiFi模组没有变,代码的移植就是通信协议的移植,在通信协议中主要的部分就是“数据接收”和“数据发送”这两个部分的移植,数据的解析保持不变。
2.1 数据接收代码移植
数据接收就是指把WiFi模组发送的信息存入环形数据缓冲区“RingBuffer”里面,这里移植后使用的是按帧写入缓存,而不是按字节,核心代码在如下:


其中rx_dat是增加的一级缓存,当串口有数据到来时先存入rx_dat,x用于记录数据长度,这里事先开启有串口空闲中断,从而实现了按帧处理接收数据,当空闲中断产生时可以认为一帧数据接收完毕,此时判断ringbuf可写区域长度是否大于缓存数据长度,只有当可写区域足够时才将整帧数据写入,从而保证整帧数据的完整。
在usart.c中记得开启空闲中断:


2.2 数据发送代码的移植
这里很简单,只需要把函数“Pro_UART_SendBuf”中对应串口发送的代码替换一下就可以了,但是有一点需要注意的是:不要使用中断方式发送。如下:


至此移植基本结束了,直接编译的话会有很多头文件、变量引用相关错误,把需要引用的变量引用一下,头文件包含进去即可。
以上为代码移植大致过程,细节可对应上面链接的代码,不明之处可以跟帖讨论!


joint 发表于 2018-3-12 10:08:18

你的那个Giwitslib.c是现在的gizwits_product.c 的文件么

聪聪聪 发表于 2016-7-30 18:55:39

大哥,第三张照片是不是那个浇水持续时间的程序

李~ 发表于 2016-7-30 22:01:22

聪聪聪 发表于 2016-7-30 18:55
大哥,第三张照片是不是那个浇水持续时间的程序

不是,这个是任务列表,使用了FREERTOS软实时系统,浇水持续时间很容易实现,就是一个变量,你如果使用stm32f103c8t6做的话,可以直接在任务里写自己的代码,很方便,建议你搜索一下FREERTOS

聪聪聪 发表于 2016-7-31 19:05:20

大哥机智云的源码,我可不可以改里面的配置按键为我开发板上的按键,还有灯,但是改完之后不会亮。。。

李~ 发表于 2016-7-31 20:07:16

聪聪聪 发表于 2016-7-31 19:05
大哥机智云的源码,我可不可以改里面的配置按键为我开发板上的按键,还有灯,但是改完之后不会亮。。。 ...

你说的源码是官网下载的吗?当然可以改,按键可以根据你的板子情况来改,你是怎么改的?什么灯不会亮?
1、你的按键怎么接的?
2、代码改了那些地方?
请贴图描述清楚

聪聪聪 发表于 2016-7-31 20:39:00

本帖最后由 聪聪聪 于 2016-10-17 22:35 编辑

谢谢大哥

luscu 发表于 2016-8-15 21:11:53

楼主可以介绍一下你这个项目主要实现了那些功能

k7arm 发表于 2016-8-22 16:21:37

下载后直接编译会有一个error:
..\Protocol\Protocol.h(5): error:#5: cannot open source input file "stdbool.h": No such file or directory

k7arm 发表于 2016-8-22 16:22:10

..\Protocol\Protocol.h(5): error:#5: cannot open source input file "stdbool.h": No such file or directory

李~ 发表于 2016-8-22 18:49:00

本帖最后由 李~ 于 2016-8-22 18:50 编辑

k7arm 发表于 2016-8-22 16:22
..\Protocol\Protocol.h(5): error:#5: cannot open source input file "stdbool.h": No such file or di ...

1、请使用MDK5.20版本进行编译
2、确认MDK安装了F103c8t6的pack
3、刚刚重新下载重新编译,没有问题






k7arm 发表于 2016-8-23 06:46:01

李~ 发表于 2016-8-22 18:49
1、请使用MDK5.20版本进行编译
2、确认MDK安装了F103c8t6的pack
3、刚刚重新下载重新编译,没有问题


多谢,已经编译过了,是版本的问题。

许许 发表于 2016-10-6 22:10:28

移植,移植:):):):):)

DCLED 发表于 2017-8-31 16:39:46

你好~
小白我請教下
我MDK5.20版本進行編譯,完全使用版主提供的源碼做Build後,出現以下錯誤
請問是哪裡還有問題需要做修改???

豪强 发表于 2018-4-20 16:03:15

本帖最后由 豪强 于 2018-4-20 16:08 编辑

老哥,这个esp8266怎么和STM32F103C8T6接线啊

AIcainiao 发表于 2018-7-13 15:25:10

楼主大大,我怎么看都觉得是只有温湿度数值上传,没有其他的功能呢

icge 发表于 2019-8-6 14:07:24

大佬,求问怎么把app换为自己的app呀,我想修改一下app页面
页: [1]
查看完整版本: 基于ESP8266-12F+STM32F103C8T6植物宝_cubemx工程创建与Gokit代码移植