收藏官网首页
查看: 27044|回复: 16

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

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
发表于 2016-7-29 18:22:03 | 显示全部楼层 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
本帖最后由 李~ 于 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){  }里面的代码;
00.png.thumb.jpg
01.png.thumb.jpg
002.png.thumb.jpg
003.png.thumb.jpg
除cubeMX生成的代码外,还应该包含有机智云通信协议代码,放在“Protocol”文件夹下:
0.png.thumb.jpg
1.png.thumb.jpg
2、代码移植
因为使用的是“MCU+WIFI模组”的方式,WiFi模组没有变,代码的移植就是通信协议的移植,在通信协议中主要的部分就是“数据接收”和“数据发送”这两个部分的移植,数据的解析保持不变。
2.1 数据接收代码移植
数据接收就是指把WiFi模组发送的信息存入环形数据缓冲区“RingBuffer”里面,这里移植后使用的是按帧写入缓存,而不是按字节,核心代码在如下:

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

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

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


01.png.thumb.jpg

0

主题

3

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
发表于 2018-3-12 10:08:18 | 显示全部楼层
你的那个Giwitslib.c是现在的gizwits_product.c 的文件么

6

主题

33

帖子

394

积分

中级会员

Rank: 3Rank: 3

积分
394
发表于 2016-7-30 18:55:39 | 显示全部楼层
大哥,第三张照片是不是那个浇水持续时间的程序

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
 楼主| 发表于 2016-7-30 22:01:22 | 显示全部楼层
聪聪聪 发表于 2016-7-30 18:55
大哥,第三张照片是不是那个浇水持续时间的程序

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

6

主题

33

帖子

394

积分

中级会员

Rank: 3Rank: 3

积分
394
发表于 2016-7-31 19:05:20 | 显示全部楼层
汉枫LPB120模块
大哥机智云的源码,我可不可以改里面的配置按键为我开发板上的按键,还有灯,但是改完之后不会亮。。。

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
 楼主| 发表于 2016-7-31 20:07:16 | 显示全部楼层
聪聪聪 发表于 2016-7-31 19:05
大哥机智云的源码,我可不可以改里面的配置按键为我开发板上的按键,还有灯,但是改完之后不会亮。。。 ...

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

0

主题

2

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2016-8-15 21:11:53 | 显示全部楼层
楼主可以介绍一下你这个项目主要实现了那些功能

3

主题

34

帖子

159

积分

注册会员

Rank: 2

积分
159
发表于 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

3

主题

34

帖子

159

积分

注册会员

Rank: 2

积分
159
发表于 2016-8-22 16:22:10 | 显示全部楼层
教您5分钟接入机智云,实现傻瓜式开发
..\Protocol\Protocol.h(5): error:  #5: cannot open source input file "stdbool.h": No such file or directory

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
 楼主| 发表于 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 ...

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






3

主题

34

帖子

159

积分

注册会员

Rank: 2

积分
159
发表于 2016-8-23 06:46:01 | 显示全部楼层
李~ 发表于 2016-8-22 18:49
1、请使用MDK5.20版本进行编译
2、确认MDK安装了F103c8t6的pack
3、刚刚重新下载重新编译,没有问题

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

1

主题

27

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2017-8-31 16:39:46 | 显示全部楼层
你好~
小白我請教下
我MDK5.20版本進行編譯,完全使用版主提供的源碼做Build後,出現以下錯誤
請問是哪裡還有問題需要做修改??? 2017-8-31 16-36-16.jpg

1

主题

8

帖子

213

积分

中级会员

Rank: 3Rank: 3

积分
213
发表于 2018-4-20 16:03:15 | 显示全部楼层
校园创客福利
本帖最后由 豪强 于 2018-4-20 16:08 编辑

老哥,这个esp8266怎么和STM32F103C8T6接线啊
E[BX%G3ACH9BX$[YY@ONGYY.png
YQB1TN1@5H$3TG{B5]%3FNB.png

17

主题

100

帖子

1378

积分

金牌会员

Rank: 6Rank: 6

积分
1378
发表于 2018-7-13 15:25:10 | 显示全部楼层
楼主大大,我怎么看都觉得是只有温湿度数值上传,没有其他的功能呢

0

主题

3

帖子

94

积分

注册会员

Rank: 2

积分
94
发表于 2019-8-6 14:07:24 | 显示全部楼层
大佬,求问怎么把app换为自己的app呀,我想修改一下app页面
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

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