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

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

3天内不再提示

嵌入式开发:如何使用机智云+STM32F407+ESP8266+freeRTOS设计

9GxC_IoTMaker 来源:CSDN技术社区 作者:霁雪寒霄 2021-02-14 11:39 次阅读

前言

随着物联网的发展,未来的嵌入式产品必然朝着更加智能化、场景多样化、实时性更高等趋势发展,要处理好这些任务时,一个好的RTOS少不了。对于嵌入式开发者来说,了解和学习一个RTOS也是必要项之一,上手简单、及时性和可靠性高的FreeRTOS是最佳选择,和对开发者友好、物联网开发平台机智云配合,刚好满足了我对智能化开发的需求。 下面,我将从基础入手,来讲讲使用机智云+STM32F407+ESP8266+freeRTOS的设计,分别定义了GPIO输入输出,PWM输入输出。(本文由机智云开发者发表于CSDN,ID号:霁雪寒霄)

01 WiFi模块烧录GAgent 1.1 在机智云官网上下载固件,下载好的固件如图1-1所示。

2c7f0cf4-5818-11eb-8b86-12bb97331649.png

1.2 在乐鑫官网下载ESP8266的烧写工具。其中第一栏选择烧写的固件文件(32位含有combine的文件),并勾选前面的方框,起始地址填0,CrystalFreq选择26M,SPI SPEED选择40MHz,SPI MODE选择DOUT,FLASH SIZE选择32Mbit-C1。如图1-2所示。

2d66cc74-5818-11eb-8b86-12bb97331649.png


1.3 按照图1-3连接电路。点击烧写软件的START,会出现“等待上电同步”字样,点击KEY1触发后,会显示下载中,知道出现“Finish”字样,表示固件烧写成功。

2d919148-5818-11eb-8b86-12bb97331649.png

02 创建产品及数据点 2.1 进入机智云官网,注册登录后进入开发者中心,可以看到如图2-1所示界面。

2dd50860-5818-11eb-8b86-12bb97331649.png

2.2 点击创建产品,在创建界面设定好产品名称,选择WIFI/移动网络方案。选择通讯方式为WIFI,数据传输方式为定长。如图2-2所示。

2e405df4-5818-11eb-8b86-12bb97331649.png


2.3 创建完成后,点击“数据点”,可以新建不同类型的数据点,如图2-3所示,该处新建了16个不同的数据点。

2e99e32e-5818-11eb-8b86-12bb97331649.png

03 使用机智云串口工具配置WiFi模块 3.1 下载机智云串口调试助手并解压,将WIFI模块与USB转TTL相连(WIFI模块的TX连TTL的RX,RX连TTL的TX,VCC一定得接3.3V),插上计算机USB接口后,打开机智云串口调试助手,选择“模拟V4MCU”,如图3-1所示。

2efb83a4-5818-11eb-8b86-12bb97331649.png


3.2 进入刚创建机智云产品中,点击“基本信息”后,获取到Product Key和Product Secret,如图3-2-1所示。将Product Key和Product Secret输入机智云串口调试助手,并点击保存,会弹出如图3-2-2的窗口,且右侧会显示我们定义的数据点列表。

2f235ec4-5818-11eb-8b86-12bb97331649.png

30234de8-5818-11eb-8b86-12bb97331649.png


3.3 选择好USB转TTL的串口,并点击“打开串口”,WIFI模块会自动询问,如图3-3所示。

30d5a33a-5818-11eb-8b86-12bb97331649.png


3.4 打开“指令界面”,点击AirLink后,接收界面会出现如图3-4类似的数据,代表WIFI模块完好。

3168f82e-5818-11eb-8b86-12bb97331649.png


3.5 进入机智云手机App,注册登录后,点击右上角“+”号,选择“一键配置”,输入手机连接的WIFI的SSID和密码(此时须保证调试的计算机与手机连接的是同一WIFI,且最好使用路由器),点击“下一步”,选择“乐鑫”,点击 “确定”,再次点击机智云串口调试助手指令界面的“AirLink”,再点击手机App上的“我已完成上述操作”,进入“搜索并连接设备”,具体流程如图3-5-1,3-5-2所示。

3193b582-5818-11eb-8b86-12bb97331649.png

31b2b702-5818-11eb-8b86-12bb97331649.png


3.6 点击搜索到的设备,在手机App上控制数据点,可以看到机智云串口调试助手数据点的值跟随变化(如图3-6-1,3-6-2所示),则代表WIFI模块配置完成。

322608ba-5818-11eb-8b86-12bb97331649.png

324f2560-5818-11eb-8b86-12bb97331649.png

04 配置MCU代码 实现WIFI与MCU的通信协议(可使用机智云MCU代码生成),配置Cube mx并生成代码。
4.1 进入机智云网站产品页面,点击MCU开发,硬件方案选择“独立MCU方案”,硬件平台选择“STM32F407x”,并在Product Secret处输入该产品的Product Secret,点击生成代码包,如图4-1所示。

32ad7700-5818-11eb-8b86-12bb97331649.png


4.2 稍等片刻待代码包生成,下载并解压,如图4-2所示。

32fd3b32-5818-11eb-8b86-12bb97331649.png


4.3 由于在该实验中我们使用的是STM32F407VGT6,而机智云生成代码的MCU为STM32F407ZGT6,故我们需要移植一下,首先打开Cube mx新建一个项目,选择STM32F407VG(如图4-3所示),双击创建项目。

33700c7a-5818-11eb-8b86-12bb97331649.png


4.4 点击File->Import Project,点击“…”并选择刚才机智云生成的项目文件中的ioc文件(如图4-4-1所示),点击“OK”后,直到出现图4-4-2所示窗口,点击“Close”,表示导入成功,导入后的引脚配置如图4-4-3所示。

35553592-5818-11eb-8b86-12bb97331649.png

35f15332-5818-11eb-8b86-12bb97331649.png

3670048e-5818-11eb-8b86-12bb97331649.png


4.5 首先配置SYS,Timebase Source选择TIM14,如图4-5-1所示。然后配置除了KEY1,KEY2的GPIO(KEY1,KEY2已经自动生成),如图4-5-2所示。

37085dec-5818-11eb-8b86-12bb97331649.png

377a268e-5818-11eb-8b86-12bb97331649.png


4.6 配置Timers,TIM2是项目生成时自动配置,所以不用配置,配置TIM4时,将Clock Source选择为Internal Clock。TIM4的Channel 1-Channel 4为PWM输出(如图4-6-1),该实验中配置的引脚为PB6-PB9,在下方的Configuration中的Parameter Settings中配置如图4-6-2所示,其他地方使用默认即可。

37ad8bbe-5818-11eb-8b86-12bb97331649.png

37daef1e-5818-11eb-8b86-12bb97331649.png

4.7 再配置ADC,勾选IN4-IN7(对应引脚为PA4-PA7),如图4-7-1所示。然后在下方Configuration中DMA Setting,点击“Add”,出现如图4-7-2所示界面,选择ADC1,并配置成如图4-7-3所示, Parameter Settings中配置如图4-7-4所示,其他不用配置,保持默认即可,值得注意的是,该处使用到了TIM8,TIM8的Mode中Clock Source选择为Internal Clock,TIM8的Configuration配置如图4-7-5所示。

380753c4-5818-11eb-8b86-12bb97331649.png

3864c0ea-5818-11eb-8b86-12bb97331649.png

38af9002-5818-11eb-8b86-12bb97331649.png

38f82b1e-5818-11eb-8b86-12bb97331649.png

3a0a1616-5818-11eb-8b86-12bb97331649.png


4.8 点击System Core中的NVIC,配置优先级如图4-8-1所示,Code generation配置如图4-8-2所示。

3a5dcc02-5818-11eb-8b86-12bb97331649.png

3a8b981c-5818-11eb-8b86-12bb97331649.png


4.9 点击Middleware中的FREERTOS,interface选择CMSIS_V1(如图4-9-1所示),在下方Tasks and Queues并创建以下6个Task,如图4-9-2所示。

3afbf940-5818-11eb-8b86-12bb97331649.png

3b4083ee-5818-11eb-8b86-12bb97331649.png

05 编写外设驱动程序 编写外设驱动程序,直至手机App能与MCU建立通信,并能控制传感器外设。
5.1 打开keil5,在main.c中找到HAL_TIM_PeriodElapsedCallback函数,将整个函数注释掉,然后在gizwits_product.c文件中同样可以找到同名HAL_TIM_PeriodElapsedCallback函数,将刚才注释函数的函数体内容放入其中,如图5-1-1,5-1-2所示。

3bc244c4-5818-11eb-8b86-12bb97331649.png

3c03e3a2-5818-11eb-8b86-12bb97331649.png


5.2 将main.c中while(1)中内容剪切放入创建的StartGizwitsHandleTask任务中,用于处理数据上行下发,如图5-2-1,5-2-2所示。

3cb47618-5818-11eb-8b86-12bb97331649.png

3cf770ee-5818-11eb-8b86-12bb97331649.png


5.3 将StartSysInitTask函数中for循环内容改为vTaskDelete(NULL),如图5-3所示。

3d20c872-5818-11eb-8b86-12bb97331649.png


5.4 在gizwits_product.h文件中头文件导入处添加(如图5-4-1所示)“#include“smsis_os.h””,并添加如图5-4-2所示内容。

3d6ad9f8-5818-11eb-8b86-12bb97331649.png

3db90da8-5818-11eb-8b86-12bb97331649.png


5.5 在common.h中创建联合体,如图5-5-1所示,其中高8位用以区别GPIO和PWM,次高8位用来区别引脚,后16为存入数值。在函数gizwitsEventProcess中,for循环外声明联合体(如图5-5-2所示),for循环中switch—case语句中,注释掉if—else判断,对联合体变量赋值,并利用通知将该联合体发送出去,如图5-5-3所示(个例)。

3e4d715a-5818-11eb-8b86-12bb97331649.png

3ef72ab0-5818-11eb-8b86-12bb97331649.png

3f5c55a2-5818-11eb-8b86-12bb97331649.png


5.6 在StartGPIO_OutputTask函数中,在for循环外添加如图5-6-1的声明代码,在for循环内,删除原先所有代码,添加如图5-6-2所示代码,本图只举case为1的情况,添加后可对GPIO进行开关操作。

3fcd8b1e-5818-11eb-8b86-12bb97331649.png

400e1aa8-5818-11eb-8b86-12bb97331649.png


5.7 在StartPWM_OutputTask函数中,需要开启PWM通道,并需要先将CCR置为0(在for循环外,如图5-7-1所示),并就通知内容的不同,做不同的动作(在for循环内),添加代码部分如图5-7-2所示。

4061a204-5818-11eb-8b86-12bb97331649.png

40d3341e-5818-11eb-8b86-12bb97331649.png


5.8 在StartGPIO_InputTask函数中,直接利用HAL_GPIO_ReadPin读取GPIO状态,并存入数据点结构体中,如图5-8-1所示。在StartADC_inputTask函数中,需要先开启DMA,其中adc_result_buf为定义的一个长度为4的数组,添加代码如图5-8-2所示。

415b5db2-5818-11eb-8b86-12bb97331649.png

4192e728-5818-11eb-8b86-12bb97331649.png


5.9 将main.c中的如下代码剪切(如图5-9-1所示)到StartSysInitTask函数中(如图5-9-2所示)。

42767a56-5818-11eb-8b86-12bb97331649.png

43001522-5818-11eb-8b86-12bb97331649.png

06 检测 至此,两类输入/输出代码完成,可以根据不同用途添加代码,在这里我用到了一个LED检测了一下。
6.1 手机上打开机智云App,控制舵机转动和LED亮灭。如下图所示。

463f375e-5818-11eb-8b86-12bb97331649.png

责任编辑:PSY

原文标题:嵌入式开发必备项:用FreeRTOS+机智云开发智能设备

文章出处:【微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

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

    关注

    5082

    文章

    19104

    浏览量

    304823
  • RTOS
    +关注

    关注

    22

    文章

    811

    浏览量

    119595
  • GPIO
    +关注

    关注

    16

    文章

    1204

    浏览量

    52055
  • 机智云
    +关注

    关注

    2

    文章

    587

    浏览量

    26393

原文标题:嵌入式开发必备项:用FreeRTOS+机智云开发智能设备

文章出处:【微信号:IoTMaker,微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32F407机智开发esp8266固件烧写一直不成功

    按照STM32F407 机智开发手册上的实验步骤,板子和esp8266连接烧写固件,一直失败,求指导
    发表于 05-06 23:10

    嵌入式开发必备项:用FreeRTOS+STM32F4+机智开发智能设备

    +STM32F407+ESP8266+freeRTOS的设计,分别定义了GPIO输入输出,PWM输入输出。实现步骤如下:WIFI模块烧录GAgent。1.1 在机智官网上下载固件,下载好的固件如图1-1所示。1.2 在乐鑫官网
    发表于 01-15 14:12

    STM32F407ZGT6+esp8266软件APP硬件组成

    要求:通过手机上的机智通用APP,点亮开发板载LED0、LED1摘要硬件组成:STM32F407ZGT6+esp8266(乐鑫)软件APP:机智
    发表于 08-05 07:06

    VScode嵌入式开发ESP8266详解

    VScode嵌入式开发ESP32以及ESP8266入门1.适用与有部分C语言的开发者或者学生学习ESP系列的
    发表于 11-08 06:12

    自动测量系统STM32F103C8+ESP8266+DHT22的相关资料分享

    目录STM32嵌入式开发笔记——自动测量系统STM32F103C8+ESP8266+DHT22一、 系统功能与原理二、 系统硬件需求三、 系统模块介绍与设置Stm32F103C8T6
    发表于 12-21 07:49

    机智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是原来机智二代产品上的,可能正常联上机智,故没有给ESP8266
    的头像 发表于 06-21 10:06 1.2w次阅读

    ST意法半导体与机智携手打造的物联网开源方案DIY数字仪表

    MCU设备端基于ST提供的固定嵌入式开发板进行开发,ST提供最新板卡及开发资源,板卡采用双MCU:STM32G0和STM32F7,搭载最新G
    的头像 发表于 02-04 14:55 3184次阅读

    机智Arduino与ESP8266 ESP12-F之间的连接

    这些天在琢磨ESP8266 ESP12-F接入机智的方法,试了很多坑。比如ESP12-F与arduino 之间的接线问题,找了好多资料。其
    的头像 发表于 05-25 16:41 5778次阅读
    <b class='flag-5'>机智</b><b class='flag-5'>云</b>Arduino与<b class='flag-5'>ESP8266</b> <b class='flag-5'>ESP12-F</b>之间的连接

    基于FreeRTOS嵌入式台控制系统设计

    基于FreeRTOS嵌入式台控制系统设计(嵌入式开发要学单片机吗)-基于FreeRTOS嵌入式
    发表于 07-30 11:57 19次下载
    基于<b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>云</b>台控制系统设计

    嵌入式开发-WIFI模块-ESP8266使用详细介绍

    ESP8266使用详细介绍目录ESP8266使用详细介绍1.工具准备2.简介3.模式介绍4.具体代码5.嵌入式开发参考1.工具准备串口助手:链接:https://pan.baidu.com/s
    发表于 11-02 18:21 85次下载
    <b class='flag-5'>嵌入式开发</b>-WIFI模块-<b class='flag-5'>ESP8266</b>使用详细介绍

    VScode嵌入式开发ESP32以及ESP8266入门

    VScode嵌入式开发ESP32以及ESP8266入门1.适用与有部分C语言的开发者或者学生学习ESP系列的
    发表于 11-03 12:51 29次下载
    VScode<b class='flag-5'>嵌入式开发</b>之<b class='flag-5'>ESP</b>32以及<b class='flag-5'>ESP8266</b>入门

    STM32F4】STM32F407+ESP8266连接机智过程详解

    要求:通过手机上的机智通用APP,点亮开发板载LED0、LED1摘要硬件组成:STM32F407ZGT6+esp8266(乐鑫)软件APP:机智
    发表于 12-06 09:06 27次下载
    【<b class='flag-5'>STM32F</b>4】<b class='flag-5'>STM32F407+ESP8266</b>连接<b class='flag-5'>机智</b><b class='flag-5'>云</b>过程详解

    STM32F103 + ESP8266机智开发常见问题集锦:入门者必读!

    关于ESP8266模块的选择针对初学者,强烈建议选择带有串口的ESP8266开发板!这可以避免像我曾经遇到的烧录固件失败等问题。推荐直接购买已预装机智
    的头像 发表于 07-18 08:11 483次阅读
    <b class='flag-5'>STM32F</b>103 + <b class='flag-5'>ESP8266</b>与<b class='flag-5'>机智</b><b class='flag-5'>云</b><b class='flag-5'>开发</b>常见问题集锦:入门者必读!

    STM32 ESP8266阿里链接源码

    stm32F103C8T6 ESP8266 物联网电表 登录阿里
    发表于 08-29 14:21 6次下载