- 博客(41)
- 资源 (7)
- 收藏
- 关注
原创 基于linux平台的嵌入式开发每日一练(八)
今天是2020.08.07 星期五 阵雨。第5、6、7节讲解了在i.mx6ul开发板进行裸机编程,并且基于LED和BEEP的驱动学习了i.mx6ul芯片引脚的GPIO功能的一个子功能–输出功能。本节我们再来学习GPIO功能的另一个子功能–输入功能。以按键驱动为例子。一、分析按键硬件原理图,梳理按键输入给你实现的条件按键 KEY0 是连接到 I.MX6U 的 UART1_CTS 这个 IO 上的, KEY0接了一个 10K 的上拉电阻,因此 KEY0 没有按下的时候 UART1_CTS 应该是高电平,
2020-08-19 14:19:22
344
原创 基于linux平台的嵌入式开发每日一练(七)
今天是2020.08.06 星期四 阵雨。上一节学习了仿STM32格式和使用官网SDK资料来开发LED驱动。但是有一个很明显的问题,就是我们对整个工程缺乏一个管理,所有的功能函数都放在了一个main.c文件中。这样代码的阅读性和可移植性(复用性)都会变得很差。今天这一节将结合蜂鸣器驱动编写来学习对整个工程的管理。一、蜂鸣器硬件原理分析蜂鸣器硬件原理图如图所示:由原理图可得出通过一个 PNP 型的三极管 8550 来驱动蜂鸣器,通过 SNVS_TAMPER1 这个 IO来控制三极管 Q1 的导通,
2020-08-14 17:03:33
356
原创 基于linux平台的嵌入式开发每日一练(六)
今天是2020.08.05 星期三 雨。前面几节我们学习了在基于i.mx6ul芯片的开发板上选择启动设备,了解启动文件构成,使用汇编编译LED驱动,并且在linux系统下进行编译,链接、转换文件格式、反汇编,使用烧录文件烧写等等操作。但是实际开发过程中汇编用的很少,大部分都是 C 语言开发,汇编只是用来完成 C 语言环境的初始化。这一节我们来学习仿照STM32驱动开发格式和移植官方SDK开发驱动两种开发驱动的方式。还是以开发LED驱动为例。一、仿照STM32驱动开发方式开发首先准备C语言运行环境,即
2020-08-13 15:55:43
322
原创 基于linux平台的嵌入式开发每日一练(五)
今天是2020.08.04 星期二 雨。在前一节,我们学习了怎么在linux平台上编写,编译,下载一个裸机版的 led 驱动。其中我们发现这个下载烧录文件和我们平时遇到的不一样,它不是直接将编译生成的可执行文件(led.bin)直接烧录,而是使用一个烧录软件协助烧录,而且最终烧录到SD卡中的文件还不是led.bin文件,而是一个叫做load.imx的文件。那么这个烧录软件是什么?为什么要烧录到SD卡?为什么烧录的文件是load.imx?这个load.imx文件与led.bin文件有什么不相同?这一节就带着
2020-08-13 11:20:20
315
原创 基于linux平台的嵌入式开发每日一练(四)
今天是2020.08.03 星期六 雨。该节使用纯汇编的形式编写LED驱动(即驱动芯片的GPIO,控制其GPIO输出高低电平)。
2020-08-11 18:21:27
263
原创 基于linux平台的嵌入式开发每日一练(三)
今天是2020.08.01 星期六 阴天。1、了解Cortex-A7 MPCore 架构2、ARM汇编基础
2020-08-11 11:44:27
321
原创 基于linux平台的嵌入式开发每日一练(二)
第二天.开发平台I.MX6U-ALPHA介绍今天是2020.07.31 星期五 阴天。1、I.MX6U-ALPHA 开发板的组成及板载资源I.MX6U-ALPHA 开发板由底板和核心板两部分组成。其他板载资源有:◆ 1 个核心板接口,支持 I.MX6UL/6ULL 等核心板◆ 1 个电源指示灯(蓝色)◆ 1 个状态指示灯(红色)◆ 1 个六轴(陀螺仪+加速度)传感器芯片, ICM20608◆ 1 个高性能音频编解码芯片, WM8960◆ 1 路 CAN 接口,采用 TJA1050 芯片
2020-08-03 11:38:38
1320
原创 基于linux平台的嵌入式开发每日一练(一)
序言:学习基于linux平台的嵌入式开发之前我已经经过了基于纯单片机开发》》》基于实时系统ucosIII、freeRTOS平台的嵌入式开发两个阶段的学习和实战。基于linux平台的嵌入式开发是我学习嵌入式开发的第三个阶段,也是步入复杂的嵌入式系统开发的开始。之所以打算把自己每天的学习经过记录下来,一方面是为了做记录方便随时看,加深记忆,最重要的还是由于我自己怕自己在这个过程中懈怠,每日都写可以时刻提醒我。过程肯定是痛苦的,不过每日进步一点,我相信在我设定的时间内一定可以完成我的学习目标。下边是我的学习线
2020-07-30 13:48:33
1029
原创 QT基础学习之数据库(一)
QT基础学习之数据库一、数据库简介Qt 中的Qt SQL模块提供了对数据库的支持。该模块中的众多类基本可以分三层,如图所示:其中驱动层为具体的数据库和SQL接口层之间提供了底层的桥梁;SQL接口层提供了对数据库的访问,其中的QSqlDatabase类用来创建连接,QSqlQuery类可以使用SQL语句来实现与数据库交互,其他几个类对该层提供了支持;用户接口层的几个类实现了将数据库中的数据链接到窗口部件上,它们是更高层次的抽象,即便不熟悉SQL也可以操作数据库。如果要使用Qt SQL模块中的这些类,需
2020-07-22 14:40:31
1066
原创 QT入门学习之TCP
1、TCP简介TCP是一个用于数据传输的低层的网络通信协议,HTTP、TCP这些互联网协议都是基于TCP协议的。TCP是一个面向数据流和链接的可靠传输协议。QTcpSocket类为TCP提供了一个接口,该类也继承自QAbstractSocket。可以使用QTcpSocket来实现POP3、SMTP、NNTP等标准的网络协议,也可以实现自定义的网络协议。与QUdpSocket传输的数据包不同,QT...
2019-12-04 13:48:51
663
原创 Qt入门学习之网络通信
QtNetwork模块简介Qt中的Qt Network模块用来编写基于TCP/IP的网络程序,其中提供了较低层次的类。如:QTcpSocket、QTcpServer和QUdpSocket等来表示较低层次的网络概念;也提供了高层次的类,如:QNetworkRequest、QNetworkReply和QNetworkAccessManager使用通用协议来执行网络操作;还提供了QNetworkCon...
2019-12-03 17:08:44
920
原创 QT入门学习之应用程序国际化
所谓国际化指的是使用Qt Linguist(Qt语言家)翻译程序的基本流程和自动判断程序运行的语言环境。国际化的英语表述为Inernationalization,通常简写为I18N,一个应用程序的国际化就是使该应用程序可以在其他国家的用户使用的过程。在Qt中所有的输入部件和文本绘制方式对Qt所支持的所有语言提供内置的支持。一、使用Linguist翻译程序的基本流程在Qt中编写代码时要对需要...
2019-11-20 16:38:05
272
原创 ubuntu下交叉编译环境的搭建
以下内容是以在ubuntu 18.04 上安装 arm-linux-gcc-4.4.3交叉编译工具为例讲解。参考链接:https://www.cnblogs.com/Dana-gx/p/10202658.html一、下载arm-linux-gcc-4.4.3.tar交叉编译包ARM官网下载https://developer.arm.com/open-source/gnu-toolchain...
2019-07-02 16:09:05
1598
原创 QSqlitter使用
QSplitter的使用QSplitter的用途QSplitter使得用户可以通过拖动子窗口之间的边界来控制它们的大小,例如:QSplitter的添加方法QSplitter的添加方法有2种:a)通过Qt Creator的界面设计工具添加;b)直接使用C++代码添加。通过Qt Creator添加QSplitter控件与Push Button等控件的添加方法不同,在“设计”视图左侧的控件...
2019-06-27 15:55:31
498
原创 SQLITE学习之进阶操作(二)
1、SQLite JoinSQLite 的 Join 子句用于结合两个或多个数据库中表的记录。JOIN 是一种通过共同值来结合两个表中字段的手段。SQL 定义了三种主要类型的连接:交叉连接 - CROSS JOIN内连接 - INNER JOIN外连接 - OUTER JOIN假设有两个表 COMPANY 和 DEPARTMENT,具体内容如下:表COMPANY:表D...
2019-06-24 16:46:49
317
原创 SQLITE学习之进阶操作(一)
1、PRAGMA命令PRAGMA语句是SQLITE数据的SQL扩展,是它独有的特性,主要用在 SQLite 环境内控制各种环境变量和状态标志。一个 PRAGMA 值可以被读取,也可以根据需求进行设置。。它采用与SELECT、INSERT等语句一样的形式来发出请求,但也有几个重要的不同:特定的PRAGMA语句可能被移走,新的PRAGMA语句可能在新的版本中添加。因此,后向兼容无法保证。未知的...
2019-06-24 15:49:05
728
原创 SQLITE学习之SQLITE基础操作(二)
1、插入在SQLITE中适应insert into语句向数据库的某一个表中添加新的数据行。insert into语句有两种基本语法,语法结构如下:INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN);在这里,column1, c...
2019-06-14 14:45:04
525
原创 SQLITE学习之SQLITE基础知识(三)
SQLITE数据类型SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。1)SQLite 存储类note:每个存储在 SQLite 数据库中的值都具有以下存储类之一NULL:值是一个 NULL 值。INTEGER:值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。REAL:值是一个浮点...
2019-06-13 16:57:43
423
原创 SQLITE学习之SQLITE基础知识(二)
SQLITE语句所有的 SQLite 语句可以以任何关键字开始,如 SELECT、INSERT、UPDATE、DELETE、ALTER、DROP 等,所有的语句以分号(;)结束。常见SQLITE语句1)SQLite ANALYZE 语句ANALYZE;orANALYZE database_name;orANALYZE database_name.table_name;2)SQL...
2019-06-13 16:41:46
5140
2
原创 SQLITE学习之SQLITE基础知识(一)
1.SQLITE常见命令sqlite常用命令被称为 SQLite 的点命令,这些命令的不同之处在于它们不以分号 ; 结束。我们只需在ubuntu终端界面上的命令提示符 $ 下键入一个简单的 sqlite3 命令,在 SQLite 命令提示符 >下,您可以使用各种 SQLite 命令,如下所示:如需获取sqlite的命令清单,可以使用 .help 命令。执行.help命令可以得到如下信...
2019-06-13 15:43:16
5637
2
原创 SQLITE学习之SQLITE安装
在ubuntu上安装SQLITE1、使用SQLITE源代码安装在sqlite官网(https://www.sqlite.org/download.html)上下载sqlite源代码。解压源代码,并跳转到解压后的sqlite源码目录中$ tar xvzf sqlite-autoconf-3280000.tar.gz$cd sqlite-autoconf-3280000执行源码中的co...
2019-06-13 10:58:52
480
原创 剖析MainWindow.cpp
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ ui->setupUi(this);}这是C++继承,说明 MainWindow 的构造函数之前需要调用父类 QMainWindow 的带有参数的构造函数。MianWindow是一个类,“::”(作用域区分符...
2019-06-10 11:37:40
1890
原创 剖析Qt的ui_*.h文件
在QT工程中的mainwindow.h常见的几行:namespace Ui { class MainWindow; } ......private: Ui::MainWindow *ui;在QT工程中的mainwindow.cpp常见的几行:#include "ui_mainwindow.h" MainWindow::MainWindow(QWi...
2019-06-10 11:28:39
5781
原创 Qt入门学习之常用界面设计组件(五)
1.QComboBox简介QComboBox是下拉列表框组件类,它提供了一个下拉表供用户选择。也可以直接当作一个QLineEdit用作输入。QComboBox除了显示可见下拉列表外,每一个项(item,或称列表项)还可以关联一个QVariant类型的变量用于存储一些不可见数据。2.QComboBox的使用I.设计时属性的设置QComboBox主要的功能是提供一个下拉列表供选择输入。在界面...
2019-04-08 18:01:19
1880
1
原创 Qt入门学习之常用界面设计组件(四)
1.时间日期与定时器I. 时间日期时间日期是经常遇到的数据类型,Qt中时间日期类型如下:QTime:时间数据类型,仅表示时间,如:15:32:19(时:分:秒)QDate:日期数据类型,仅表示日期,如:2017-4-5(年-月-日)QDateTime:日期时间数据类型,表示日期和时间,如2017-03-23 08:12:43(年-月-日 时:分:秒)Qt中专门用于日期、时间编辑和显示的...
2019-04-04 11:35:46
978
原创 Qt入门学习之常用界面设计组件(三)
1.QSlider、QScrollBar、QDial、QProcessBar、QLCDNumber介绍除了前面两节介绍到的QLineEdit和QSpinBox之外,还有其他的一些用于数值输入和显示的组件。如下:QSlider:滑动条,通过滑动来设置数值,可用于数值输入。QScrollBar:卷滚条,与QSlider功能类似,还可以用于卷滚区域。QProgressBar:进度条,一般用于显示...
2019-03-28 14:50:49
2038
原创 Qt入门学习之常用界面设计组件(二)
QSpinBox用于整数的显示和输入,一般显示十进制,也可以显示二进制,十六进制的数,而且可以在显示框中增加前缀或者后缀。SQpinBox组件的使用以下面的实验作为载体学习QSpinBox和QDoubleSpinBox这两个组件的使用。功能和前一节的功能相同只是将组件QLineEdit换成了QSpinBox,QDoubleSpinBox作为数字的输入输出组件。如下所示:QSpinBox 和...
2019-03-25 15:07:06
1102
原创 Qt入门学习之常用界面设计组件(一)
Qt类库为应用程序设计提供了大量的类,该部分主要介绍设计GUI应用程序常用的各种界面组件。该部分中的本节内容主要介绍用于字符串的输入输出及数据类型转换等知识。1.字符串的与数值间的转换在使用Qt进行GUI见面设计常用到的组件Qlabel和QLineEdit。QLabel用于显示字符串,QLineEdit用于显示和输入字符串。这两个组件都有如下两个函数用于读取和设置显示的文字。QString ...
2019-03-25 14:47:02
2016
原创 Qt入门学习之容器类
1. 容器类的简介和特性I.容器类简介存储容器(containers)有时候也被称为集合(collections),是能够在内存中存储其它特定类型的对象,通常是一些常用的数据结构,一般是通用模板类的形式。C++ 提供了一套完整的解决方案,作为标准模板库(Standard Template Library)的组成部分,也就是常说的 STL。Qt 提供了另外一套基于模板的容器类。相比 STL,这...
2019-03-22 15:54:49
545
原创 Qt入门学习之Qt全局定义
头文件包含了Qt类库的一些全局定义,包括基本的数据类型,函数和宏。一般的Qt类的头文件都会包含该文件中,所以不要显示的包含该文件也可以使用其中定义的内容。1. 数据类型的定义为确保在各个平台上的各个数据类型都有统一的长度,Qt为各个常见的数据类型定义了类型的符号,如:qint8就是signed char的类型定义:typedef signed char qint82.函数头文件包含...
2019-03-22 11:45:34
2728
原创 Qt入门学习之Qt元对象特性
Qt 是一个用标准 C++ 编写的跨平台开发类库,它对标准 C++ 进行了扩展,引入了元对象系统、信号与槽、属性等特性,使应用程序的开发变得更高效。Qt的元对象编译器(MOC)是一个预处理器,在源程序被编译前先将Qt特性的程序转换为标准C++兼容的形式,然后再由标准C++编译器进行编译。这就是为什么使用信号与槽机制的类里必须添加一个Q_OBJECT宏的原因,只有添加了这个宏,moc才能对类里的信...
2019-03-21 17:04:59
855
原创 Qt入门学习之主窗体类QMainWindow
1. 主窗体类QMainWindow简介QMainWindow是 Qt 框架带来的一个预定义好的主窗口类。所谓主窗口,就是一个普通意义上的应用程序(不是指游戏之类的那种)最顶层的窗口。比如你现在正在使用的浏览器,那么主窗口就是这个浏览器窗口。QMainWindow的布局是由一个标题栏,一个菜单栏,若干工具栏和一个任务栏。在这些子组件之间则是工作区。2. 依托主窗体类创建项目,并在主窗体中进行菜...
2019-03-20 17:13:23
2843
原创 QT入门学习之信号与槽(补充)
由上一节知使用connect()可以让我们连接系统提供的信号和槽。Qt 的信号槽机制并不仅仅是使用系统提供的那部分,还会允许我们自己设计自己的信号和槽。信号槽不是 GUI 模块提供的,而是 Qt 核心特性之一。因此,我们可以在普通的控制台程序使用信号槽。我们以经典的观察者模式的报纸和阅读者实验来学习自定义信号与槽注:该部分内容原内容出自《Qt学习之路2》这本经典书籍的第5节1. 实验理论原理...
2019-03-19 15:49:22
380
原创 QT入门学习之信号与槽
信号与槽是Qt编程的基础,信号与槽机制让界面各个组件的交互操作时变得更加直观和简单。所有从QObject或其子类(例如Qwidget)派生的类都能够包含信号和槽。当对象改动其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,他不知道另一端是谁在接收这个信号。这就是真正的信息封装,他确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但他们是普通的对象成员函数。一个槽并不知...
2019-03-19 14:47:11
1133
原创 QT入门学习之UI设计布局管理
1. QT Designer 可视化UI设计及布局管理创建一个Qidget Application项目demo2.在创建窗体时选择基类QDialog,生成的类命名为QWDialog,并选择生成窗体。这样生成的项目文件中就会自动生成qwdialog.ui文件、一个头qwdialog.h和一个源程序文件qwdialog.cpp,项目文件demo2.pro和主程序文件main.cpp。1) 使用QT...
2019-03-18 17:12:15
11777
原创 QT入门学习之UI文件设计与运行机制
在Qt Creatrer中新建一个Widget Application项目demo1,其基类选择QWidget作为窗体基类,并选择“Generrate form”复选框,让其自动生成.UI文件。1. 项目文件组成1). 项目组织文件demo1.pro,存储项目设置的文件2). 主程序入口文件main.cpp,实现main()函数的程序文件3). 窗体界面文件widget.ui文件,一个XM...
2019-03-18 13:19:42
606
原创 QT入门学习之软件程序开发初体验
使用Qt Creater软件编写一个“Hello World”程序,初步了解Qt Creater设计应用程序的基本过程。1. 新建一个项目过程1)打开Qt Creater软件,单击Qt Creater软件的菜单项"File">>>>“New File or Project"弹出New File or Project对话框。在这个对话框里选择需要创建的项目或者文
2019-03-18 09:58:44
3198
NanoPi-M4-2GB-1807-Schematic.pdf
2019-12-13
模拟电路资料.zip
2019-12-13
Zigbee协议栈详解(ZStack 协议栈实验教程 基于 CC253x Ghostyu.com 2014/7/6)
2018-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人