【北京迅为】《STM32MP157开发板使用手册》-第十四章 QtE5.12应用开发

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等


第五部分 Qt应用开发

第十章 QtE5.12应用开发

14.1 安装QtCreator

注意,如果使用我们已经搭建好的ubuntu系统,不再需要安装QtCreator,安装目录路径为/opt/Qt5.12.10(但是14.5小节直接编译ARM架构程序需要自行配置)。

注意在使用安装好的QtCreator时可能会有以下报错:

需要使用以下命令来安装对应的库。

sudo apt-get install libxcb-xinerama0

将“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\03_QT5.12文件系统\04_qtcreater软件\qt-opensource-linux-x64-5.12.10.run”拷贝到ubunt18.04虚拟机任意文件夹下,使用命令 “chmod 777 qt-opensource-linux-x64-5.12.10.run”赋予其可执行权限,之后直接使用命令 “./qt-opensource-linux-x64-5.12.10.run”,按提示安装即可。

安装步骤如下: 

点击“Next”。 

我们登录自己的账号或者注册新的账号,如上图所示,填写完成之后点击Next。(这里注册页面可能会出现问题,Next不成功可能需要先点击Back,再点击Next才能进入下一步) 

点击“Next”。 

 

选择安装的路径,点击“Next”。 

 尽可能的够勾选上,点击“Next”。

点击同意协议,然后点击“Next”。 

 等待安装完成。

点击“完成”。

14.2在PC上运行Helloworld

在使用qtcreater软件之前,需要使用以下命令安装几个依赖包,否则可能在接下来的过程中会出现一些问题:

sudo apt-get install g++ build-essential mesa-common-dev libxcb-xinerama0 libglu1-mesa-dev  

 

 使用如下命令进入qtcreator安装目录:

cd Qt5.7.0S/Tools/QtCreator/bin/

然后使用命令“./qtcreator”运行qtcreater :

如下图所示,弹出编译环境。

 

进行如下的选择新建一个工程,如下图所示: 

按上图选择,点击“choose”。 

 

如上工程命名为“helloworld”,重新定义了工程存储目录(用户根据个人习惯设置工程目录)。然后单击“Next”,继续。 

默认为qmake,不用修改,点击Next 

 如上图所示,填写对应的信息,然后点击Next/

如上图所示,不用进行任何修改,直接点击Next下一步即可。

如上图所示,选择支持 Ubuntu 的 GCC 64 位编译器。单击“下一步”,继续。 

 点击“完成”后如下图,新建工程完成。

 

点击“mainwindow.ui”,开始设计UI

Qtcreater的使用可以参考B站视频 【北京迅为】嵌入式学习之QT学习篇_哔哩哔哩_bilibili

我们在设计界面使用“lable”,输入helloworld 并调整到合适大小。

 

做好之后保存,点击运行如下图: 

 

 

14.3 命令行交叉编译Helloworld

qte 的应用移植使用 qmake 前需要先编译 qte 源码,参考第十三章。

接上一小节,如下图,在工程目录下有两个文件夹,一个是直接在 PC 上运行的代码以及应用程序,另外一个是源码。

现在进入如上右边的源码文件夹进行下面几步,就容易理解“为什么 Qt 跨平台非常方便”。 

这个 helloworld 应用相当于已经在 PC 机上调试通过了,现在我们只需要做简单的几步就可以将其移植到开发板iTOP_STM32MP157平台上。

如下图,在第十二章中我们编译生成了“/opt/qt-5.12.10-arm”,这个文件夹包含了移植所需要的最重要的工具 qmake。进入“/opt/qt-5.12.10-arm/bin”,可以看到 qmake 文件。

 

 查看了 qt-5.12.10-arm 的 qmake 之后,再进入 helloworld 的源码文件夹,如下图所示。

然后,在该文件夹中运行 qmake 使用“ /opt/qt-5.12.10-arm/bin/qmake”,如下图所示。 

 如下图,多了一个 Makefile 文件。

然后,执行编译命令“ make”,如下图所示。 

 

生成了“helloworld”。 

 

然后,使用 file 命令测试一下。如下图,“ file helloworld”,可以看到 helloworld 应用文件的基本信息,它是属于 ARM 平台的。 

然后,测试一下 X86 上位机平台的文件,如下图所示,可以观察到明显的不同。 

 

14.4 开发板运行Helloworld

下面介绍一下如何在开发板上运行 编译好的helloworld。

开发板烧写好QtE5.12文件系统,通过nfs或者U盘将helloworld 拷贝到开发板。

然后,如下图所示,在超级终端中,先修改权限“ chmod 777 helloworld”

 

 然后再运行“ ./helloworld -qws”。

 

开发板的屏幕显示如下所示,helloworld 程序就可以开发板上运行了。 

 

14.5 QtCreator直接编译ARM架构程序 

除了通过上一小节通过命令行的操作来编译在开发板上运行的程序, 还可以直接在 qtcreator 上设置,然后每次编译的程序都可以在开发板上运行。

如下图所示,打开 qtcreater 如下图操作。

 

 添加 GCC 编译器,如下图所示。

添加编译器路径,点击 apply 如下图。编译器选择,QTE5.12.10的编译器gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf。 

 

选择 Qt 版本,如下图。 

 

选择 qt5.12.10 的 qmake 路径点击 apply,如下图。 

选择构建套件,如下图。 

配置 QT5.12.10如下图。 

到此配置完成,下面举例。新建工程,起名helloqt

如下图选择 Qt5.12.10。

 

编辑并运行: 

新建终端打开工程目录,ls 查看如下图:

输入“file untitled”查看文件属性,如图:

 

使用nfs或者U盘拷贝到开发板如下图: 

 

使用命令“./untitled”,运行结果如下所示: 

 

 

14.6 Qt5.7测试例程

应用源码请参考网盘“ iTOP-STM32MP157开发板网盘资料汇总\04_测试例程\02_QtE5.12应用例程”中的压缩包。

QtE5.12 例程源码如下:

压缩包“iTOP-STM32MP157-QtE5.12-adc 模数转换_V1.0.zip”,ADC 模数转换测试的例程。

压缩包“iTOP-STM32MP157-QtE5.12-audio 声卡_V1.0.zip”,声卡测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-can 总线_V1.0.zip”,can 总线测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-helloworld_V1.0.zip”,helloworld 测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-photo2 相册_V1.0.zip”,数码相册测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-QTcalculator 计算器_V1.0.zip”,计算器测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-qtclock 时钟_V1.0.zip”,时钟测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-QTsnakegame 贪吃蛇_V1.0.zip”,游戏贪吃蛇测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-QTtextedit 文本阅读器_V1.0.zip”,文本阅读器测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-rtc 实时时钟_V1.0.zip”,实时时钟测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-TCP 通信例程_V1.0.zip”,网络 TCP 通信测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-testfonts 中文字体_V1.0.zip”,中文字体显示测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-Timer 定时器_V1.0.zip”,定时器测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-tuixiangzi 推箱子_V1.0.zip”,游戏推箱子测试例程。

压缩包“iTOP-STM32MP157-QtE5.12-uart 串口_V1.0.zip”,串口测试例程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/873887.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业品牌声量统计怎么做?有没有什么工具?

企业在进行社交媒体推广宣传的过程中,通常需要关注品牌声量,借此衡量品牌传播效果、进行投放营销复盘等。也可以辅助下一步品牌策略的制定。那品牌声量是什么,怎么去统计这个品牌声量数据呢? 品牌声量是什么? 简单来…

mysql笔记3(数据库、表和数据的基础操作)

文章目录 一、数据库的基础操作1. 显示所有的仓库(数据库)2. 创建数据库注意(命名规范): 3. 删除数据库4. 查看创建数据库的SQL5. 创建数据库时跟随字符编码6. 修改数据库的字符编码 二、表的基础操作1. 引入表的思维2. 引用数据库3. 查看该数据库下面的表4. 创建表…

全网最适合入门的面向对象编程教程:46 Python函数方法与接口-函数与事件驱动框架

全网最适合入门的面向对象编程教程:46 Python 函数方法与接口-函数与事件驱动框架 摘要: 函数是 Python 中的一等公民,是一种可重用的代码块,用于封装特定的逻辑;事件驱动框架是一种编程模式,它将程序的控制流转移给外部事件,如用…

vscode docker debug python

1. 安装Vscode插件 ”Docker“”Dev Containers““Remote - ssh” 2. 进入Docker环境 点击左侧 Docker图标,选择Containers 对容器进行右键启动 生成新页面直接进行选择文件路径即可,之后得操作均在容器内进行

6.1排序——插入排序与希尔排序

本篇博客来梳理两种常见排序算法:插入排序与希尔排序 常见的排序算法如图 写排序算法的原则:先写单趟,再写整体 一、直接插入排序 1.算法思想 先假定第一个数据有序,把第二个数据插入;再假设前两个数据…

读取、写入、生成txt文本文档详解——C#学习笔记

一、4中写入文本的方式: //①表示清空 txt StreamWriter mytxt1 new StreamWriter("D:\\1清空.txt"); string t1 ""; mytxt1.Write(t1); mytxt1.Close(); //②表示向txt写入文本 StreamWriter mytxt2 new StreamWriter("D:…

不到200行代码,一键写出简单贪吃蛇网页游戏!附详细代码!快来看看吧!

​哈喽大家好&#xff0c;这里是大白百宝阁&#xff0c;每天分享一段小代码~ 今天要分享的是&#xff0c;不到200行代码&#xff0c;制作html版贪吃蛇&#xff0c;效果如下&#xff1a; 游戏结束后&#xff0c;还会显示&#xff1a; 代码如下&#xff1a; <!DOCTYPE html&g…

GitHub图床

GitHub图床 文章目录 GitHub图床图床介绍Github访问GitHub手动修改hostsgithub520 加速器创建账户创建仓库创建token PicGoTypora 图床介绍 图床 存放图片的地方 为什么设置图床呢 在我认识图床之前, 有一个问题 [^放在typora上面的图片, 其实是一个链接, 并且将图片存放在本地…

Java之枚举

目录 枚举 引入 定义 代码示例 常用方法 代码示例 枚举的优缺点 枚举和反射 面试题 枚举 引入 枚举是在JDK1.5以后引入的。主要用途是&#xff1a;将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式&#xff1a; publicstaticintfinalRED1;…

树莓派通过串口驱动SU-03T语音模块

树莓派通过串口驱动SU-03T语音模块 文章目录 树莓派通过串口驱动SU-03T语音模块一、SU-03T语音模块的配置和烧录1.1 PIN引脚配置&#xff1a;1.2 设置唤醒词&#xff1a;1.3 设置控制详情&#xff1a;1.4 下载SDK并烧录到语音模块&#xff1a; 二、测试语音模块三、树莓派通过串…

汇舸环保从北交所转战港交所:狂分红超8000万,客户依赖度越来越高

《港湾商业观察》施子夫 7月31日&#xff0c;上海汇舸环保科技集团股份有限公司&#xff08;以下简称&#xff0c;汇舸环保&#xff09;递表港交所获受理&#xff0c;联席保荐机构中信证券和中国银河证券。 8月14日&#xff0c;公司披露公告称&#xff0c;另委任法国巴黎证券…

HTML零基础教程(超详细)

一、什么是HTML HTML&#xff0c;全称超文本标记语言&#xff08;HyperText Markup Language&#xff09;&#xff0c;是一种用于创建网页的标准标记语言。它通过一系列标签来定义网页的结构、内容和格式。HTML文档是由HTML元素构成的文本文件&#xff0c;这些元素包括标题、段…

99.WEB渗透测试-信息收集-网络空间搜索引擎shodan(1)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;98.WEB渗透测试-信息收集-Google语法&#xff08;12&#xff09; 信息收集方向-网络空间…

UEFI——获取UEFI MemoryMap

一、MemoryMap简介 首先讲一下什么是MemoryMap&#xff1f; 内存映射&#xff08;Memory Mapping&#xff09;是一种将文件内容映射到进程的虚拟地址空间的技术。在这种机制下&#xff0c;文件可以视为内存的一部分&#xff0c;从而允许程序直接对这部分内存进行读写操作&…

西门子WinCC开发笔记(一):winCC西门子组态软件介绍、安装

文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142060535 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…

Mysql Innodb存储引擎原理—链接如下

Mysql Innodb存储引擎| ProcessOn免费在线作图,在线流程图,在线思维导图 ProcessOn是一个在线协作绘图平台&#xff0c;为用户提供强大、易用的作图工具&#xff01;支持在线创作流程图、思维导图、组织结构图、网络拓扑图、BPMN、UML图、UI界面原型设计、iOS界面原型设计等。同…

大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

数学建模笔记—— 模糊综合评价

数学建模笔记—— 模糊综合评价 模糊综合评价1. 模糊数学概述2. 经典集合和模糊集合的基本概念2.1 经典集合2.2 模糊集合和隶属函数1. 基本概念2.模糊集合的表示方法3. 模糊集合的分类4. 隶属函数的确定方法 3. 评价问题概述4. 一级模糊综合评价模型典型例题 5. 多层次模糊综合…

SprinBoot+Vue停车场管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

iOS——GCD再学习

GCD 使用GCD好处&#xff0c;具体如下&#xff1a; GCD 可用于多核的并行运算&#xff1b;GCD 会自动利用更多的 CPU 内核&#xff08;比如双核、四核&#xff09;&#xff1b;GCD 会自动管理线程的生命周期&#xff08;创建线程、调度任务、销毁线程&#xff09;&#xff1b…