0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32 HAL库与标准库的esp8266接入机智云方案(二)

机智云 2025-05-28 18:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


在《基于STM32HAL库与标准库的esp8266接入机智云方案(一)》中,我们详细介绍了硬件连接和机智云客户端的创建。本篇将重点讲解如何下载代码、分析下载的代码,并直接使用这些代码连接机智云。同时,我们还将讨论如何移植HAL库和标准库以实现与机智云的兼容,帮助开发者更高效地完成项目的云平台接入。



代码下载e2d86e6c-3baa-11f0-986f-92fbcf53809c.png


注意:此时手机app端的该设备为网页端的虚拟设备仅仅是作为调试UI使用。之后移植完成代码后,会与ESP8266连接,此时会出现一个新的设备信息来控制MCU,确认后,就可以去生成代码了。





e2e3567e-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png


点击MCU开发,选择硬件平台。


首先,确认项目的开发方式是标准库还是HAL 库,如果是标准库,只能选择其他平台。我使用的是HAL库,同时也是F1x的板子,所以我选择F103C8。输入PS码后即可点击生成项目代码。生成后下载下来使用即可!





e2f62902-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

后面如果需要加其他数据或者需要控制其他东西的话都是需要重新生成代码的!



分析下载下来的代码e2d86e6c-3baa-11f0-986f-92fbcf53809c.png


下载下来后我们先简单观察里面的代码的基本功能和配置:我们打开下载下来的代码如果是F103C8型号就是可以直接使用的,如果不是我后面也会详细说移植步骤!


我们打开里面的CubeMX工程可以发现:使用机智云需要一个定时器ms级别的中断和两个串口,一个打印信息,一个连接esp8266,还有两个按键(非必要),然后我们点开keil工程,查看main函数里面到底有什么,使用了什么:



/* Initialize interrupts */ MX_NVIC_Init();//中断优先级配置 /* USER CODE BEGIN 2 */ timerInit();//开启定时器中断 uartInit();//开启串口2接收中断 userInit();//初始化数据(比如,LED) gizwitsInit();//机智云初始化 keyInit();//按键初始化
GIZWITS_LOG("MCU Init Success , SoftVersion = %s\r\n",SOFTWARE_VERSION);//打印数据 /* USER CODE END 2 */#ifdefOTA_ENABLE Pro_D2W_Ask_Module_Reboot();#endif /* Infinite loop */ /* USER CODE BEGIN WHILE */ while(1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ userHandle();//数据上传 gizwitsHandle((dataPoint_t *)¤tDataPoint);//任务处理(比如:开关LED) } /* USER CODE END 3 */AI写代码


我们可以使用CH340连接串口1,esp8266连接串口2,查看按键的打印信息:


e30cd396-3baa-11f0-986f-92fbcf53809c.png


发现按键设置长短按,分别用来设置esp8266的工作模式,移植后的代码的串口发送函数已经包装成了GIZWITS_LOG


想要熟悉使用机智云代码就必须会使用两个函数:


userHandle();//数据上传

gizwitsHandle((dataPoint_t *)¤tDataPoint);//任务处理(比如:开关LED)

AI写代码


userHandle();//数据上传






e3181864-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

gizwitsHandle((dataPoint_t *)¤tDataPoint);//任务处理(比如:开关LED):点击跳转定义





e32b9736-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

点击进入箭头这个函数:





e33cef72-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png


基本了解了代码的最基本的功能后,后续移植也会更得心应手。


直接使用下载下来的代码e2d86e6c-3baa-11f0-986f-92fbcf53809c.png


4.1、修改代码点亮LED


下载的代码中只定义了一个定时器、两个串口、两个按键,其他就没有配置了,我们这里自己个他配置一个LED的GPIO口,用于模拟灯:


修改1:





e3532ee0-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png


staticvoidMX_GPIO_Init(void){ GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin : KEY1_Pin */ GPIO_InitStruct.Pin=KEY1_Pin; GPIO_InitStruct.Mode=GPIO_MODE_INPUT; GPIO_InitStruct.Pull=GPIO_PULLUP; HAL_GPIO_Init(KEY1_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : KEY2_Pin */ GPIO_InitStruct.Pin=KEY2_Pin; GPIO_InitStruct.Mode=GPIO_MODE_INPUT; GPIO_InitStruct.Pull=GPIO_PULLUP; HAL_GPIO_Init(KEY2_GPIO_Port, &GPIO_InitStruct);
//自己添加的GPIO口初始化,用于驱动LED GPIO_InitStruct.Pin=GPIO_PIN_9; GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull=GPIO_PULLUP; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);}AI写代码


修改2:





e33cef72-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png



连接机智云平台

e2d86e6c-3baa-11f0-986f-92fbcf53809c.png


然后按照要求连接号硬件和LED,上电试着连接机智云,先长按Key2进入airlink模式,然后使用手机打开机智云点击右上角的+,然后点击一键配网

等待配对成功后,就可以使用机智云控制LED开关了。





e387b4e4-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png


e3982a86-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

连接机智云串口打印信息





e3af84d8-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png



HAL库移植机智云e2d86e6c-3baa-11f0-986f-92fbcf53809c.png


前面我们已经熟悉了下载的代码的最基本需求:一个串口打印信息,一个串口连接esp8266,一个定时器ms级别中断,两个按键(非必要),那么我们进行移植之前就得先得到一个已经配置好的keil工程



Keil工程的生成e2d86e6c-3baa-11f0-986f-92fbcf53809c.png


前面我们已经熟悉了机智云代码的最基本的需求,所以我们移植之前的需要得到一个符合条件的Keil工程,一个串口打印信息(串口1,115200bits/s),一个串口连接esp8266(串口2,9600bits/s),一个定时器实现ms级别中断(定时器2),两个按键(非必须),需要移植的代码中配置好的就是串口1、串口2,定时器2,如果我们想要使用其他的外设,我们就需要修改机智云代码中的句柄,比如我们想要串口1连接esp8266,串口2打印信息,定时器3实现中断,我们在机智云代码中需要的修改的地方:huart1和huart2互换地方,htim2修改为htim3,以此类推。


我们这里就不随便换他的外设配置了,就按照它的来配置,最快把这个机智云物联网平台使用起来:





e3cda008-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

打开外部高速时钟





e3dc9144-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

配置时钟频率:





e3efb936-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

配置定时器二:





e4072102-3baa-11f0-986f-92fbcf53809c.jpge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

别忘记了打开定时器中断:





e4164a7e-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

配置串口1负责打印信息(115200bits/s):





e424d2e2-3baa-11f0-986f-92fbcf53809c.jpge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

配置串口二(9600bits/s):





e433c040-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

一样别忘记打开中断:





e446381a-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

配置点灯GPIO口:





e45a87c0-3baa-11f0-986f-92fbcf53809c.jpge2d86e6c-3baa-11f0-986f-92fbcf53809c.png

最后生成工程即可:





e46cb896-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png


e4878be4-3baa-11f0-986f-92fbcf53809c.pnge2d86e6c-3baa-11f0-986f-92fbcf53809c.png


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

    关注

    2305

    文章

    11122

    浏览量

    371193
  • 机智云
    +关注

    关注

    3

    文章

    630

    浏览量

    27633
  • HAL
    HAL
    +关注

    关注

    2

    文章

    73

    浏览量

    13555
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HAL每天一例】第063例:WIFI-ESP8266

    /1i574oPv 密码:r3s3(硬石YS-F1Pro开发板HAL例程持续更新\1. 软件设计之基本裸机例程(HAL版本)\YSF1-064. WIFI-
    发表于 07-07 09:03

    机智自动生成工程移植STM32CubeMX

    ESP8266-12F);3.USB转TTL模块一个,串口调试用;软件工具为:1.STM32CubeMX V4.16.1;2.机智自助开发平台;3.串口调试助手;4 . Keil
    发表于 02-07 16:59

    ESP8266-12F模块接入案例

    串口调试助手验证该模块和机智服务器的通信是否OK。示例:附件及详细文档请到机智社区搜索“ESP8266-12F模块无线
    发表于 02-20 16:49

    如何移植STM32固件

    机智官方生成的MCU代码(hal)移植为STM32标准
    发表于 11-11 06:24

    STM32F103+ESP8266使用工程模板接入机智的过程

    正点原子STM32mini开发板+ESP8266接入机智博主是一位刚刚接触STM32的小白,在
    发表于 02-14 07:47

    基于STM32esp8266机智app联网总结

    背景是有一个成熟的STM32机智项目代码,记录一下成功应用的过程。第一步:用ttl转u***串口给esp8266烧录机智
    发表于 04-25 13:40

    机智ESP8266模组固件资料下载

    机智ESP8266模组固件
    发表于 04-23 15:55 67次下载
    <b class='flag-5'>机智</b><b class='flag-5'>云</b><b class='flag-5'>ESP8266</b>模组固件资料下载

    从5方面描述STM32F407+ESP8266连接机智过程

    由于本次使用的ESP8266是原来机智代产品上的,可能正常联上机智,故没有给
    的头像 发表于 06-21 10:06 1.3w次阅读

    ESP8266系列封装资源下载

    ESP8266系列封装资源下载
    发表于 05-20 16:04 0次下载

    ESP8266 PCB的模块封装下载

    ESP8266 PCB的模块封装下载
    发表于 10-28 14:50 211次下载

    机智官方生成的MCU代码(hal)移植为STM32标准教程

    机智官方生成的MCU代码(hal)移植为STM32标准
    发表于 11-06 09:51 15次下载
    <b class='flag-5'>机智</b><b class='flag-5'>云</b>官方生成的MCU代码(<b class='flag-5'>hal</b><b class='flag-5'>库</b>)移植为<b class='flag-5'>STM32</b><b class='flag-5'>标准</b><b class='flag-5'>库</b>教程

    STM32通过ESP8266利用机智平台实现手机远程操作

    直奔主题,本次练习是将STM32作为主控芯片,ESP8266作为外设,利用串口传递信息,通过机智平台实现与手机之间的通信
    发表于 12-06 18:36 14次下载
    <b class='flag-5'>STM32</b>通过<b class='flag-5'>ESP8266</b>利用<b class='flag-5'>机智</b><b class='flag-5'>云</b>平台实现手机远程操作

    正点原子STM32F103+ESP8266使用工程模板接入机智的详细步骤

    正点原子STM32mini开发板+ESP8266接入机智博主是一位刚刚接触STM32的小白,在
    发表于 12-08 20:21 16次下载
    正点原子<b class='flag-5'>STM32F103+ESP8266</b>使用工程模板<b class='flag-5'>接入</b><b class='flag-5'>机智</b><b class='flag-5'>云</b>的详细步骤

    教程:ESP8266接入机智,成功实现代码移植

    本文主要以图文方式介绍了ESP8266接入机智,生成MCU代码,并成功移植代码,实现APP控制硬件设备的过程。操作步骤如下:1、将固件写入ESP8
    的头像 发表于 01-12 10:16 7791次阅读
    教程:<b class='flag-5'>ESP8266</b><b class='flag-5'>接入</b><b class='flag-5'>机智</b><b class='flag-5'>云</b>,成功实现代码移植

    基于STM32 HAL标准ESP8266接入机智方案(一)

    最近在项目中需要进行物联网平台对接,之前我找到了一些资料,发现机智是一个不错的平台。机智的资料丰富,且操作简便,可以根据MCU自动生成
    的头像 发表于 05-28 18:02 830次阅读
    基于<b class='flag-5'>STM32</b> <b class='flag-5'>HAL</b><b class='flag-5'>库</b>与<b class='flag-5'>标准</b><b class='flag-5'>库</b>的<b class='flag-5'>ESP8266</b><b class='flag-5'>接入</b><b class='flag-5'>机智</b><b class='flag-5'>云</b><b class='flag-5'>方案</b>(一)