- 博客(117)
- 资源 (4)
- 收藏
- 关注
原创 CPU使用百分比测量
文章目录1 CPU使用百分比测量1.1 需求概述1.2 设计原理1.3 设计实现1 CPU使用百分比测量1.1 需求概述1.2 设计原理1.3 设计实现特殊代码块:统计使用百分比:相关代码如下:// 空闲任务计数与最大计数uint32_t idleCount;uint32_t idleMaxCount;static void initCpuUsageStat (vo...
2020-03-31 17:02:29 672
原创 堆栈使用测量
文章目录1 堆栈使用测量1.1 问题概述1.2 设计原理1.3 设计实现1 堆栈使用测量1.1 问题概述我们知道在当前的设计中每个任务都配备一个有限的任务栈,用于保存各种关键性的数据。但是这个栈空间是有限的,实际有可能超出此空间。可能出现如下错误:1.2 设计原理设计原理如下:注意事项:1.3 设计实现清空堆栈空间:统计堆栈使用情况:需要修改task结构体://...
2020-03-31 15:58:49 602
原创 软定时器的删除与状态查询
文章目录1 软定时器的删除与状态查询1 软定时器的删除与状态查询定时器的删除:定时器状态查询:参考资料:【李述铜】从0到1自己动手写嵌入式操作系统...
2020-03-31 14:40:01 218
原创 软定时器的启动与停止
文章目录1 软定时器的启动与停止1 软定时器的启动与停止软定时器单独开一个定时器任务来处理,硬定时器直接放在Systick中断中进行处理。定时器启动:定时器停止:具体的实现代码如下:/*************************************** Copyright (c)***********************************************...
2020-03-31 14:26:51 942
原创 list
文章目录1 list的基本概念2 list的常用用法2.1 list对象的默认构造2.2 list对象的带参数构造2.3 list头尾的添加移除操作2.4 list的数据存取2.5 list与迭代器2. 6 list的赋值2.7 list的大小2.8 list的插入2.9 list的删除2.10 list的反序排列1 list的基本概念list是一个双向链表容器,可高效地进行插入删除元素。L...
2020-03-31 14:02:40 140
原创 软定时器的原理与创建
文章目录1 软定时器的原理与创建1.1 问题概述1.2 设计原理1.3 设计实现1 软定时器的原理与创建1.1 问题概述在实际应用中,常常需要周期性或者在指定时间做一件事情:周期性:在指定的延时开始做某件事情,然后周期性重复执行。一次性:在指定的延时开始后做某件事情,执行一次后立即结束。显然,硬件定时器有限,而这种需求可能有很多个。单纯依赖硬件定时器不能满足需求。也许,可以使用任...
2020-03-30 16:17:48 834
原创 互斥信号量的删除与状态查询
文章目录1 互斥信号量的删除与状态查询1 互斥信号量的删除与状态查询互斥信号量的删除:状态查询:/************************************************************************************************************ Function name : tMutexDest...
2020-03-30 15:44:21 413
原创 deque
文章目录1 deque简介2 deque的常用用法2.1 deque对象的默认构造2.2 deque对象的带参数构造2.3 deque头部和末尾的添加移除操作2.4 deque的数据存取2.5 deque与迭代器2.6 deque的赋值2.7 deque的大小2.8 deque的插入2.9 deque的删除1 deque简介deque容器概念:deque是“double-ended qu...
2020-03-30 15:04:37 570 1
原创 Qt中的模型视图设计模式
文章目录1 初探Qt中的模型视图设计模式2 模型视图中的索引1 初探Qt中的模型视图设计模式模型视图设计模式的核心思想:模型(数据)与视图(显示)相分离。模型对外提供标准接口存取数据(不关心数据如何显示)。视图自定义数据的显示方式(不关心数据如何组织存储)。模型视图模式的直观理解:模型视图模式的工作机制:当数据发生改变时:模型发出信号通知视图。当用户与视图进行交互时:视图...
2020-03-30 14:05:42 458
原创 STL中的迭代器
文章目录1 STL中的迭代器1 STL中的迭代器使用的过程中总结的几个要点如下:iterator继承自const_iterator。不能通过const_iterator修改其指向的内容,但是可以对迭代器本身进行操作。...
2020-03-30 11:56:33 195
原创 互斥信号量的等待与通知
文章目录1 互斥信号量的等待与通知1 设计原理1.2 设计实现1 互斥信号量的等待与通知1 设计原理等待互斥信号量:信号量未被占有:标记为已占有。锁定次数+1。信号量被自己占有:锁定次数加1。信号量被高优先级任务占有:当前任务进入等待列表。信号量被低优先级任务占有:将占有信号量的优先级提升到当前任务的优先级。当前任务进入等待。释放信号量:...
2020-03-28 16:51:38 439
原创 互斥信号量的原理与创建
文章目录1 互斥信号量的原理与创建1.1 问题概述1.2 设计原理1.3 设计实现1 互斥信号量的原理与创建1.1 问题概述问题:如何处理多个任务共享资源冲突的问题?使用计数信号量存在的不足:优先级反转现象:1.2 设计原理锁定计数器:优先级继承:1.3 设计实现定义互斥信号结构:互斥信号量的初始化:/*****************************...
2020-03-28 15:32:37 793
原创 List
文章目录1 线性表的基本概念1.1 线性表的表现形式1.2 线性表(List)的抽象定义1.3 线性表(List的性质)1.4 线性表的一些常用操作2 继承关系图和接口实现3 代码实现1 线性表的基本概念1.1 线性表的表现形式零个或多个数据元素组成的集合数据元素在位置上是有序排列的数据元素的个数是有限的数据元素的类型必须相同1.2 线性表(List)的抽象定义线性表是具有相同...
2020-03-28 15:09:04 162
原创 Qt中的QTabWidget
文章目录1 Qt中的QTabWidget1 Qt中的QTabWidgetQt中的多页面切换组件QTabWidget:能够在同一个窗口中自由切换不同页面的内容。是一个容器类型的组件,同时提供友好的页面切换方式。QTabWidget的使用方式:在应用程序中创建QTabWidget的对象。将其他QWidget对象加入该对象中。小贴士:在QTabWidget对象中加入一个组件...
2020-03-28 10:50:33 3017
原创 Qt中应用程序的打包与发布
文章目录1 Qt中应用程序的打包与发布1.1 调试与发布1.2 程序的库依赖1.3 部署程序的开发1 Qt中应用程序的打包与发布1.1 调试与发布发布应用程序时的候选者:调试版(debug):开发阶段生成的可执行程序。发布版(release):最终产品的可执行程序。调试版的可执行程序:包含与调试相关的各种信息,体积巨大。执行速度慢,支持断点调试。发布版的可执行程序:无...
2020-03-28 10:01:37 304
原创 事件标志组的删除与状态查询
文章目录1 事件标志组的删除与状态查询1.1 设计实现1 事件标志组的删除与状态查询1.1 设计实现事件标志组的删除:状态查询:参考资料:【李述铜】从0到1自己动手写嵌入式操作系统...
2020-03-27 16:58:52 221
原创 事件标志组的等待与通知
文章目录1 事件标志组的等待与通知1.1 设计需求1.2 设计实现1 事件标志组的等待与通知1.1 设计需求当事件标志位发生时:没有任务等待,设置相应的事件标志。有任务等待时,唤醒等待任务。1.2 设计实现等待事件标志:无查询等待事件标志:通知事件发生:tFlagGroup.h:/***************************************...
2020-03-27 16:37:05 389
原创 事件标志组的原理与创建
文章目录1 事件标志组的原理与创建1.1 问题概述1.2 设计原理1.3 设计实现1 事件标志组的原理与创建1.1 问题概述如何在中断ISR与任务之间传递多个事件标志?可以通过事件标志组:事件标志组可以提供类似前后台系统中设置标志位然后由任务处理该标志对应的事件功能。但与前后台系统中相比,应用事件标志组模块,允许中断设置标志。并且允许多个任务同时等待该标志,一旦相应的标志位发生,任...
2020-03-27 14:00:47 840
原创 存储块的删除与状态查询
文章目录1 存储块的删除与状态查询1.1 设计实现1 存储块的删除与状态查询1.1 设计实现存储块的删除:存储块的状态查询:参考资料:【李述铜】从0到1自己动手写嵌入式操作系统...
2020-03-27 13:42:02 254
原创 文本编辑器中命令行参数的应用
文章目录1 文本编辑器中命令行参数的应用1 文本编辑器中命令行参数的应用我们要知道对于每一个应用程序我们都能够接收命令行参数,那么对于GUI系统中命令行参数如何传递到应用程序呢?主要有如下两种方式:传统应用方式:在命令行启动GUI程序时传递参数。操作系统关联方式:在文件被双击时,操作系统根据文件后缀选择应用程序,操作系统会将文件路径作为命令行参数启动应用程序。我们需要提供一个公有的...
2020-03-27 09:40:31 354
原创 存储块的存储与释放
文章目录1 存储块的存储与释放1.1 设计原理1.2 设计实现1 存储块的存储与释放1.1 设计原理获取存储块:有空闲存储块,直接取出空闲块。无空闲存储块,任务进入等待列表。释放存储块:无任务等待,插入到空闲链表。有任务等待,释放等待队列头部的任务。1.2 设计实现获取存储块:无等待获取存储块:释放存储块:/*************************...
2020-03-26 17:27:50 307
原创 存储块的原理与创建
文章目录1 存储块的原理与创建1.1 问题概述1.2 设计原理1.3 设计实现1 存储块的原理与创建1.1 问题概述malloc和free:存在的问题:频繁地进行任意大小的内存分配可能会产生很多不连续的细小的外部碎片,导致无法再次分配。代码实现比较复杂,分配和释放过程操作时间不确定。我们考虑下是否真的需要分配任意大小的存储空间吗?从程序最底层到上层应用,所有东西开发都是完...
2020-03-26 16:35:43 1485
原创 Object
1 当代软件架构实践中经验尽量使用单继承的方式进行系统设计尽量保持系统中在存在单一的继承树尽量使用组合关系代替继承关系2 创建Object类的意义遵循经典设计准则,所有的数据结构都继承自Object类定义动态内存申请的行为,提高代码的可移植行注意: 对于new操作失败,不同的编译器行为不一致。有的编译器会返回null,有的编译器会直接抛出预定义的异常。所以,为了代码的可移植性...
2020-03-26 10:59:17 222
原创 文本编辑器中的配置文件
文章目录1 文本编辑器中的配置文件1 文本编辑器中的配置文件程序中的配置文件:应用程序在运行后都有一个初始化的状态。一般而言,程序的初始化状态是最近一次运行退出前的状态。问题:如何保存和恢复程序状态呢?解决思路:程序退出前保存状态参数到文件(数据库)。程序再次启动时读出状态参数并恢复。状态参数的存储方式:文本文件格式(XML、JSON等)。轻量级数据库(Access...
2020-03-26 10:29:30 444
原创 PID控制算法
文章目录1 位式控制算法1.1 位式控制算法框图1.2 位式控制算法的特点1 位式控制算法1.1 位式控制算法框图首先,用户可以通过按键、滑动电阻或者其他方式输入一个控制信号Sv给控制算法, 然后控制算法会结合输入信号Sv和输出采集回来的信号Pv来计算输出量out,然后由out信号控制执行部件,最后由执行部件作用到具体的控制对象上。最后我们要从被控制对象上采集需要控制的变量(可以是温度、湿...
2020-03-26 08:51:54 1862
原创 邮箱的状态查询
文章目录1 邮箱的状态查询1.1 设计实现1 邮箱的状态查询1.1 设计实现邮箱的状态查询结构:邮箱的状态查询:参考资料:【李述铜】从0到1自己动手写嵌入式操作系统...
2020-03-26 08:46:32 564
原创 邮箱的清空与删除
文章目录1 邮箱的清空与删除1.1 设计实现1 邮箱的清空与删除1.1 设计实现邮箱的清空:邮箱的删除:参考资料:【李述铜】从0到1自己动手写嵌入式操作系统...
2020-03-26 08:44:09 637
原创 C++版数据结构继承关系图
文章目录1 C++版数据结构继承关系图1 C++版数据结构继承关系图http://www.plantuml.com/plantuml/png/RP0nJaCn38Ptd-AfUs_0K4JPAW622uJK4g592gaZKOaH1WQcYWc9bGs1kl4aECrBhe58J7c6BhRp_Vb_HnajI0MApiA98OlD83syflkNtAxIqqr-QxltLMwVqzrdTx...
2020-03-25 16:28:49 1220 1
原创 Exception
1 异常类构建异常的类型也可以是自定义类型对于类类型异常的匹配依旧是至上而下严格匹配的赋值兼容性原则在异常匹配中依然适用一般而言:- 匹配子类异常的catch放在上部- 匹配父类异常的catch放在下部设计原则: 在可复用代码库设计时,尽量使用面向对象技术进行架构,尽量使用异常处理机制分离正常逻辑和异常逻辑。2 继承关系图和接口实现异常类继承关系图异常类功能定义...
2020-03-25 16:24:59 305
原创 文本编辑器实现打开帮助文件的功能
文章目录1 文本编辑器实现打开帮助文件的功能1 文本编辑器实现打开帮助文件的功能打开外部文件:QDesktopServices提供了一系列桌面开发相关的服务接口。通过QDesktopServices中的成员函数打开帮助文件:QDesktopServices::openUrl(QUrl("path"))。槽函数的绑定:槽函数的实现:参考资料:QT实验分析教程...
2020-03-25 15:09:46 308
原创 文本编辑器中实现自动换行的功能
文章目录1 文本编辑器中实现自动换行的功能1 文本编辑器中实现自动换行的功能实现思路:获取当前文本编辑框的换行模式。将模式进行反转后并进行设置。更新对应QAction对象的状态。槽函数的绑定:槽函数的实现:void MainWindow::onFormatWrap(){ QPlainTextEdit::LineWrapMode mode = mainEditor.l...
2020-03-25 15:02:55 2557
原创 文本编辑器中实现自定义编辑框中字体和大小的功能
文章目录1 文本编辑器中实现自定义编辑框中字体和大小的功能1 文本编辑器中实现自定义编辑框中字体和大小的功能实现思路:通过QFontDialog选择字体及大小。将QFont对象设置到文本编辑框。槽函数的绑定:槽函数的实现:void MainWindow::onFormatFont(){ bool ok = false; QFont font = QFontDi...
2020-03-25 14:59:48 427
原创 文本编辑器实现关于对话框的功能
文章目录1 文本编辑器实现关于对话框的功能1 文本编辑器实现关于对话框的功能关于对话框:标准的桌面应用软件都有一个关于对话框。关于对话框用于标识软件自身的信息:软件Logo、项目名、版本号。开发者信息。版权信息。联系方式。经典设计方案:AboutDialog:#ifndef _ABOUTDIALOG_H_#define _ABOUTDIALOG_H_#inc...
2020-03-25 14:55:47 334
原创 邮箱的获取与释放
文章目录1 邮箱获取与释放1.1 设计实现1 邮箱获取与释放1.1 设计实现获取消息:释放消息:代码如下:/************************************************************************************************************ Function name : tMb...
2020-03-24 17:48:45 327
原创 邮箱的原理与创建
文章目录1 邮箱的原理与创建1.1 问题概述1.2 设计原理1.3 设计实现1 邮箱的原理与创建1.1 问题概述如何在多个任务间传递消息进行通信呢?1.2 设计原理设计要点如下:邮箱无消息,任务等待。邮箱没有任务收消息,消息缓存。考虑效率问题,保存消息起始地址。1.3 设计实现定义邮箱结构:邮箱结构初始化:参考资料:【李述铜】从0到1自己动手写嵌入式操作系...
2020-03-24 16:30:14 562
原创 计数信号量的删除与状态查询
文章目录1 计数信号量的删除与状态查询1 计数信号量的删除与状态查询信号量的删除:信号量的状态查询:参考资料:【李述铜】从0到1自己动手写嵌入式操作系统...
2020-03-24 15:37:47 262
原创 文本编辑器中实现设置工具栏和状态栏可见性的功能
文章目录1 文本编辑器中实现设置工具栏和状态栏可见性的功能1 文本编辑器中实现设置工具栏和状态栏可见性的功能实现思路如下:通过setVisible()设置可见性。更新界面上QAction对象的状态:菜单中的QAction对象是否勾选。工具栏中的QAction对象是否按下。槽函数的定义:槽函数的绑定,只截取一处:槽函数的实现:void MainWindow::onT...
2020-03-24 15:05:41 1246
原创 文本编辑器实现跳转到指定行的功能
文章目录1 文本编辑器实现跳转到指定行的功能1 文本编辑器实现跳转到指定行的功能用户需求:提供输入对话框。用户可输入目标行号。确定后光标跳转到指定行。行间跳转算法设计:通过输入对话框获取目标行号。查找换行符的位置计算目标行第一个字符的下标。通过QTextCursor定位到目标行。核心代码如下,槽函数的绑定忽略了:void MainWindow::onEditGoto(...
2020-03-24 14:41:20 936
STM32F103C8T6_GRBL 1.1f 移植
2019-12-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人