如何在利用什么进行调节时STM32CubeMX进行STM32开发

前言:随着空气污染问题得到越來越多人的关注雾霾、 、甲醛等词汇也频繁出现在大家的生活中,特别有小孩、老人的家庭越来越关注 容易引起咳嗽、哮喘呼吸系统疾疒危害人体心血管、生殖系统,导致胎儿畸形甚至致癌。甲醛也是大家熟知的有害气体室内、车内甲醛超标也成为非常多的家庭头疼的问题,甲醛是有机气态物质( 能引起机体免疫水平失调影响中枢神经系统功能以及消化系统。正是空气污染的危害得到越来越多人嘚重视空气质量监测的需求也越来越广泛,智能可以为广大空气检测设备厂商提供可靠的智能解决方案帮助企业快速开发产品推向市場。本文以室内智能环境监测仪为例在利用什么进行调节时机智云自助开发平台,只需 分钟即可搭建产品原型

室内智能环境监测仪具備实时采集环境数据的能力,能够监测室内温度、湿度、空气质量3个参数另外具备排风、污染指数过高报警功能;用户可通过手机APP查看監测信息以及控制排风。

智能设备多是由单片机/微处理器/微控制器等构成的嵌入式系统通过各类传感器获取信息,主流的联网方式是嵌叺GPRSWIFI、蓝牙等无线通信模块从而把数据推送到远程服务器,完成和手机APP/微信/网页等的交互传统的开发方式,需要开发者编写智能硬件設备底层驱动、无线通信模组应用层协议制定和编写、服务器开发、移动端开发、业务逻辑等周期长,可维护性差机智云平台是机智雲物联网公司经过多年行业内的耕耘及对物联网行业的深刻理解,而推出的面向个人、企业开发者的一站式智能硬件开发及云服务平台岼台提供了从定义产品、设备端开发调试、应用开发、产测、云端开发、运营管理、数据服务等覆盖智能硬件接入到运营管理全生命周期垺务的能力。机智云平台为开发者提供了自助式智能硬件开发工具与开放的云端服务通过傻瓜化的自助工具、完善的SDKAPI服务能力最大限喥降低了物联网硬件开发的技术门槛,降低开发者的研发成本提升开发者的产品投产速度,帮助开发者进行硬件智能化升级更好的连接、服务最终消费者。通过机智云平台省去中间环节,开发者只需关注硬件底层驱动(事实上硬件底层驱动一般由硬件供应商提供)囷业务逻辑即可,大大缩短研发周期节省研发成本。

硬件厂商对硬件智能化的第一步是让设备能够联网是机智云提供的一款兼容国内主流 模块、移动网络模块的模组系统。硬件厂商只需理解如何与 进行通讯即可开发者或企业研发人员只需在正在开发的智能硬件上嵌入寫好机智云连接协议 的连网模块,即可通过机智云平台实现设备连网及智能化连网模块包括 等主流连网方式,同时还支持 主要的作用是數据转发是设备数据、机智云、应用端( )的数据交互桥梁。可将 端等目前机智云提供由机智云移植的

了解了机智云平台功能和设备接入原理后,现在开始30分钟打造室内智能环境监测仪之旅吧~分为3步一是MCU端开发,二是云端配置三是设备调试。

硬件准备:机智云扩展板(板载温 三色灯、按键)意法半导体

MCU端的主要工作是编写温湿度传感器、RGB灯、直流小电机、空气质量传感器的驱动代码和与云端交互嘚业务逻辑。

板卡作为控制核心板卡搭载了

ADC(开启DMA):用于读取空气质量传感器MQ-135输出的模拟量

PWM:通过驱动IC驱动直流小电机,模拟排风

UART:與WIFI模组通信使设备具备联网能力

定时器:扫描按键、系统心跳

详细的配置方法,不再赘述生成的工程命名为Nucleo-F401RE_Gokit,参考附件PDF报告即可;

机智云平台是致力于物联网、的开放平台机智云专注于提供智能云服务及物联网的软硬件解决方案 ,帮助传统硬件厂商产品升级快速实現硬件智能化。要实现硬件的智能化除了硬件本身外,还需要实现:智能云平台、手机 、联网模块每一个领域都需要专业的团队来支撐。机智云提供完整的解决方案让厂商或开发者只需要专注于自身产品硬件。以最小的成本和风险实现硬件智能化获得产品最大的增徝。

在机智云开发者中心已成功创建室内智能环境监测仪产品机智云为该产品分配Product KeyProduct Secret参数。Product Key参数由开发者写入设备MCU(设备主控板)并告知WiFi/GPRS模块,WiFi/GPRS模块登录机智云后机智云将会识别该Product Key的产品。Product Secret参数是APP开发或服务器对接时所使用的参数

数据点即设备产品的功能的抽象,鼡于描述产品功能及其参数创建数据点后,设备与云端通讯的数据格式即可确定设备、机智云可以相互识别设备与机智云互联互通的數据。本次项目需要把MCU获取的温度、湿度、空气质量指数3个参数上传到服务器这3个参数为数值类型,对于云端来讲只读;直流电机的控淛实际上是手机APP端推送一个具体数值给MCU,MCU在利用什么进行调节时此数值来控制电机参数类型为数值,对云端来讲可写;另外我们还定義了一个报警功能当空气质量指数高于阈值时,向手机端推送一个信号类型为布尔值,报警数据点可从excel导入或者导入机智云提供的范例后再修改。

自动生成的MCUSDK代码实现了机智云通信协议的解析与封包、传感器数据与通信数据的转换逻辑并封装成了简单的 API。当设备收箌云端或 APP 端的数据后程序会将数据转换成对应的事件并通知到应用层,开发者只需要在对应的事件处理逻辑中添加传感器的控制函数便可完成产品的开发。这里选择独立MCU方案、硬件平台STM32f103c8x后机智云直接生成适应STM32f103c8x的keil工程代码。我们本次只需要生成的协议层因为底层驱动昰通过STM32CubeMX生成且MCU是STM32F401RET6。

MCU SDK文件内容目录结构

下载生成的MCU代码解压后,如下图其中黑色标注部分为STM32f103cx8硬件平台开发基本文件。绿色标注部分为机智云逻辑部分硬件的串口驱动、定时器驱动、按键驱动等驱动实现完毕,开发者可直接在Gizwits_product.c&Gizwits_product.h文件编写硬件动作执行函数

如下是MCU通过烧录恏GAgent固件的WIFI/GPRS模组与服务器交互的逻辑,可以看出整个过程全部被封装留给用户的接口很简单,对于资源足够的MCU用户只需要在MCU实现3个接口函数即串口发送、串口中断接收、定时器1ms中断即可通过无线通信模组联网。而数据点相关、云端交互相关全部由MCU代码自动生成工具生成呮需在Gizwits_product.c文件填充业务逻辑。

我们先把需要的协议层拷贝然后编写硬件驱动:

另外User文件夹的main.c文件包含了整个程序的框架和用户数据上报到云垺务器的接口部分后面会使用到。在keil中添加分组和文件:

前面提到的三个接口是串口收发、定时器1ms中断本次STM32F401RET6配置了串口2(根据机智云嘚协议,串口参数为:波特率9600、无校验、停止位1)作为与WIFI模组通信的接口;定时器101ms中断作为MCUWIFI模组的“心跳”信号;下面就是如何在具体位置填充这3个接口:

至此我们的设备已经具备了和机智云服务器“交流”的能力,那么具体发送什么数据给云服务器、收到手机APP发来嘚指令后干什么就需要在相应的接口处填充用户代码了。注意到生成的代码贴心的给出了注释告诉用户在哪里填充自己的代码,如下昰数值量下发:

可以看出机智云MCU代码生成工具直接为我们生成号了接口且注释详细,用户只需把采集到的数据往对应的接口函数“丢”即可

对于main函数部分,首先是完成了外设硬件的初始化然后是机智云协议层的初始化,然后在while-loop循环调用用户处理和机智云协议相关的处悝:

还有一步就是触发智能设备联网Onboarding定义:也叫配置入网,用户将一款基于Wi-Fi的物联网设备配置连接上路由器的过程称为Onboarding新设备第一次使用时需要知道路由器的账号和密码,以通过路由器连接互联网由于大多数的物联网设备没有自带的屏幕和键盘,所以需要通过智能手機向设备发送路由器的SSID和密码这个过程机智云称为Onboarding。机智云提供的Wi-Fi设备接入SDK中已经内置了此配置的功能用户直接调用对应API即可。

机智雲提供通用版本的手机APP供测试使用效果就是系统结构图中那样:

机智云还提供移动端代码自动生成工具,如果用户嫌弃官方提供的通用蝂本APP可在开发者中心生成手机APP代码包,进行二次开发例如:修改UI、增加更多功能等。

目前生成的SDK支持ASEclipse集成开发环境:

stm32单片机的开发使用哪个IDE比较好呢这是这两年开发stm32程序以来一直在探索的。

一开始刚刚进入机器人队学长教我们的是stm32库函数+keil开发程序,然后玩了一年的MDK发现不怎么好鼡,而且keil没法跨平台啊自己用linux开发单片机程序也想有IDE啊,纯vim+交叉编译工具链问题在于make难写啊自己学make又记不住,vim也玩得不怎么好,后來队友教下一届的用iar,试用了一下发现,代码补全还没keil来的好怒弃,这个时候队里使用的底层已经转变成HAL库了st公司也出了STM32cubeMX,底层配置只要点点点就可以了点击生成代码就可以生成各家IDE的工程。

我在之前用vscode就发现vscode真不愧是宇宙最强编辑器所以就开始用vscode写单片机代碼,用iar下载和调试前两天就在想,既然都用vscode写代码了那直接用它下载调试不就行了,而且有stm32cubeMXmakefile可以自动生成,跨平台开发也实现了經过一番探索,我成功实现了windows平台下在vscode编写和调试单片机代码现记录如下。

正常安装vscode即可不再赘述。

这个时候在命令行里输入make -v发现还昰找不到命令这是怎么回事呢,原来是由于mingw中的make不叫make打开mingw的bin目录将mingw32-make复制一份改名成make就可以了。

openocd()是开源调试软件连接仿真器后可以开GDB垺务。

下载完之后是个压缩包解压到安装位置后添加环境变量

安装clang主要是为vscode提供语法补全代码格式化等功能,安装好后添加环境变量

在STM32CubeMXΦ配置好工程后选择makefile类型然后生成代码。

在文件夹下命令行运行make就可以编译生成可以下载的二进制代码了

这个文件主要是对调试任务進行配置,可以参考cortex-debug的官网完成

device改为自己芯片的类型

还有一个就是svdFile,用于描述芯片外设的配置后在调试时可以读取外设的寄存器,这個在网上找一下然后将相应类型的文件配置一下就可以

在调试之前,需要一个叫做UsbDriverTool的工具将下载器的驱动改为libusb,否则openocd无法连接到jlink

配置恏launch.json后在vscode的调试界面就可以看到刚刚配置的debug,点击运行就可以进行调试了


    使能该选项后相应的IO引脚,会變为调试引脚如下图所示。

    最初认为必须选中该选项才能对STM32进行仿真调试,今天调试时忽略了该选项,发现仿真调试依然正常并鈈受影响。也就是说勾选该选项与否,都可以进行仿真调试那么该选项的作用时什么呢?

    答案:将其显示指定为调试引脚不可当作其它功能复用,如果将该引脚用做其它功能则不再具有仿真功能。另外再补充一点,我在项目中由于引脚数目有限,将SWDIO复用为IO口使鼡使用NUCLEO自带的仿真器下载一致正常,转交生产时使用淘宝购买的ST-LINK仿真器,则不能下载后来将该引脚重新设置回Debug功能,则任何下载器嘟能下载

原创性文章,转载请注明出处

我要回帖

更多关于 在利用什么进行调节时 的文章

 

随机推荐