加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • MCU端简介
    • MCU开发基本流程
    • 在嵌入式Linux平台使用MCU SDK
    • 在STM32或其它硬件平台使用MCU SDK
    • 在Windows平台使用MCU端模拟程序
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

【AWTK开源智能串口屏方案】MCU SDK使用与编译运行

01/31 16:50
2851
阅读需 9 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

本篇文章将介绍AWTK-HMI中的MCU端开发方法,包括MCU SDK常用API的说明、使用流程及如何编译到Linux和STM32平台。

引言:AWTK-HMI是基于AWTK与AWTK-MVVM开发的低代码智能串口屏方案,本系列文章介绍如何从零开发HMI程序,包括搭建开发环境、创建HMI运行时工程、修改应用界面以及开发MCU程序。

MCU端简介

相对于HMI端(串口屏端),MCU端工程是用户自己的主控程序,通过调用MCU SDK的API,可以与HMI端通过串口或网口通信。MCU端程序本身也是支持跨平台,且不受硬件与系统限制的。

图 1 AWTK-HMI工作原理

从官方的Gitee下载awtk-hmi仓库到本地目录,可以在mcu/sdk/hmi目录中浏览MCU SDK的API。如果是低资源平台则可以浏览mcu/mini-sdk/hmi目录的代码文件。下载链接:https://www.gitee.com/zlgopen/awtk-hmi

MCU开发基本流程

在使用API前需要把MCU SDK加入到目标平台编译成库或者直接放到项目中进行编译,才可以在业务逻辑中调用这些API,关于如何编译文章后面章节会进行详细介绍。

MCU SDK常用API

首先讲述一下MCU SDK实际开发中常用的API,通过这些API,MCU端可以主动获取、设置串口屏的变量值,或接收串口屏的事件,实现双向交互。

1、hmi_create或hmi_create_with_serial,这一步是创建一个hmi_t对象用于跟串口屏端进行通信。若需要使用网口通信可以先调用tk_stream_factory_create_iostream并根据函数说明传进去正确的url参数,接着再将返回的tk_iostream_t对象作为hmi_create函数的参数;

2、hmi_set_prop,通过MCU端设置串口屏某个绑定变量值,如:设置空调开关或温度值;

3、hmi_get_prop,通过MCU端获取串口屏某个绑定变量值;

4、hmi_dispatch,用于获取了串口屏事件后分发到MCU端程序中,如:监听到串口屏发生了EVT_PROP_CHANGED事件,MCU端程序接收到该事件后输出对应的日志信息;

5、hmi_destroy用于MCU端与串口屏端断开连接时销毁hmi_t对象。

MCU SDK开发示例

下图是一段在STM32平台上简单的示例代码,主要逻辑是在程序主循环中检测按键并设置串口屏变量值,并且不断检测串口屏的事件,分发到MCU端程序中:

图 2 MCU SDK使用示例

除了上面所展示的API和例子,更多API说明和示例可以参考《MCU SDK》,完整示例工程可以浏览mcu/stm32目录中的几个STM32工程。参考链接:https://gitee.com/zlgopen/awtk-hmi/blob/master/docs/mcu_sdk.md

在嵌入式Linux平台使用MCU SDK

接下来介绍如何将MCU SDK编译到嵌入式Linux平台。编译环境需要准备交叉编译工具链、MCU SDK代码文件最新版awtk与awtk-linux-fb,awtk与awtk-linux-fb放在awtk-hmi目录中,详细的操作步骤如下:

1. 参考《【从0开始创建AWTK应用程序】编译应用到嵌入式Linux平台》文章在awtk-linux-fb内配置交叉编译工具并编译awtk;

2. 进入到awtk-hmi/mcu/sdk/hmi目录中,使用交叉编译工具编译得到hmi.o目标文件,下面为示例命令(宏定义可自己添加):

arm-zlgmcu-linux-uclibcgnueabi-gcc -c hmi.c -I../../../awtk/src -DLINUX

3. 将hmi.o目标文件打包成库文件

arm-zlgmcu-linux-uclibcgnueabi-ar rcs libhmi.a ./hmi.o

4. 编译test示例程序命令如下:

arm-zlgmcu-linux-uclibcgnueabi-gcc test.c -o test -I./ -I../../../awtk/src -L./ -L../../../awtk-linux-fb/bin -lawtk -lhmi

最终可以得到test示例程序,将该程序以及awtk-linux-fb/bin目录下的libawtk.so库文件拷贝到板子上运行即可

图 3 编译得到的libhmi.a库和test程序

在STM32或其它硬件平台使用MCU SDK

如果想将MCU端编译到STM32平台运行,相对比较简单,只需将AWTK部分代码文件以及MCU SDK所有代码文件加入到现有的keil工程中进行编译,具体操作可以参考mcu/stm32的README.md《STM32移植指南》介绍。

下图是使用Keil编译现有的MCU端移植工程到STM32F429平台的工程文件结构以及编译输出信息:

图 4 Keil工程中加入AWTK与MCU SDK代码文件

图 5 编译MCU端到STM32平台

其它的硬件平台和RTOS平台移植方法也是大同小异,将AWTK编译后再将MCU SDK编译成库文件,最后配置好SDK库与AWTK库路径以及链接选项,编译可执行程序即可。

在Windows平台使用MCU端模拟程序

在mcu/simulator目录下有一个MCU端模拟器例程,可以模拟发送和接收数据,该模拟程序支持通过串口或网口的方式与串口屏连接,并支持收发串口屏消息。具体如何启动HMI端程序并与模拟器通信可以看系列上一篇文章。

运行awtk-hmi目录中的“prepare.bat”下载最新版awtk与awtk-mvvm仓库,接着在mcu/simulator目录下执行以下命令便可运行模拟程序:

sconspython ./scripts/update.py all./bin/mcu_sim.exe

图 6 Windows运行MCU端模拟程序

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
TLE6250GV33 1 Infineon Technologies AG Interface Circuit, 1-Trnsvr, BICMOS, PDSO8, GREEN, PLASTIC, SOP-8

ECAD模型

下载ECAD模型
$3.27 查看
TLE6250GXUMA1 1 Infineon Technologies AG Interface Circuit, BICMOS, PDSO8, GREEN, PLASTIC, SOP-8
$1.08 查看
KSZ8851SNLI-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC32

ECAD模型

下载ECAD模型
$5.51 查看
致远电子

致远电子

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。收起

查看更多

相关推荐

电子产业图谱