自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 KEIL环境下STM32L476工程定义非零初始化变量

STM32L476内存64位对齐。

2024-10-26 15:29:00 367

原创 使用HAL库的STM32工程,实现DMA传输USART发送接收数据

【代码】使用HAL库的STM32工程,实现DMA传输USART发送接收数据。

2024-10-25 08:30:22 664

原创 STM32L476芯片在KEIL环境下BOOT跳转APP注意事项

【代码】STM32L476芯片在KEIL环境下BOOT跳转APP注意事项。

2024-10-24 09:50:08 531

原创 基于STM32单片机HAL库硬件I2C读写LTC2943

实现读写LTC2943库仑计芯片,采集温度、库伦、电压、电流等。硬件I2C,直接用STM32CubeMX生成。调用驱动程序,读写转换参数。

2024-10-14 13:53:32 470 1

原创 QT5开发及实例学习之十九图形视图体系结构

文章目录一、Graphics View 框架结构的主要特点二、Graphics View 框架结构的三元素2.1 场景类:QGraphicsScene 类三、Graphics View 框架结构的坐标系统总结一、Graphics View 框架结构的主要特点  Graphics View 框架结构的主要特点如下。 (1)在 Graphics View 框架结构中,系统可以利用 Qt 绘图系统的反锯齿、OpenGL 工具来改善绘图性能。 (2)Graphics View 支持事件传播体系结构,可以使

2021-12-28 09:50:28 638

原创 QT5开发及实例学习之十八显示Qt5 SVG格式图片

  SVG 的英文全称是 Scalable Vector Graphics,即可缩放的矢量图形。它是由万维网络联盟 ( World Wide Web Consortium, W3C ) 在 2000 年 8 月制定的一种新的二维矢量图形格式,也是规范中的网格矢量图形标准,是一个开放的图形标准。  SVG 格式的特点如下: (1)基于 XML。 (2)采用文本来描述对象。 (3)具有交互性和动态性。 (4)完全支持 DOM。  SVG 相对于 GIF、JPEG 格式的优势是,SVG 是一种矢量图形

2021-12-23 17:17:34 3007

原创 QT5开发及实例学习之十七Qt5双缓冲机制

文章目录一、原理与设计二、绘图区的实现总结一、原理与设计  所谓双缓冲机制,是指在绘制控件时,首先将要绘制的内容绘制在一个图片中,再将图片一次性地绘制到控件上。在早期的 Qt 版本中,若直接在控件上进行绘制工作,则在控件重绘时会产生闪烁地现象,控件重绘频繁时,闪烁尤为明显。双缓冲机制可以有效地消除这种闪烁现象。自 Qt5 版本之后,QWidget 控件已经能够自动处理闪烁的问题。因此,在控件上直接绘图时,不用再操心显示的闪烁问题,但双缓冲机制在很多场合仍然有其用武之地。当所需绘制的内容较复杂并需要频繁

2021-12-22 11:57:41 1357

原创 QT5开发及实例学习之十六Qt5基础图形的绘制

文章目录前言一、绘图框架设计二、绘图区的实现总结前言  设计界面,区分各种形状及画笔颜色、画笔线宽、画笔风格、画笔顶帽、画笔连接点、填充模式、铺展效果、画刷颜色、画刷风格设置等。一、绘图框架设计  绘制各种图形实例的框架:  首先在 PaintArea 类中完成各种图形显示功能的 Widget,重绘 paintEvent() 函数。然后在主窗口 MainWidget 类中完成各种图形参数的选择。二、绘图区的实现  PaintArea 类继承自 QWidget 类,在类声明中,首先声明一个

2021-12-20 17:10:29 3004

原创 嵌入式Linux系统编程学习之三十四 Socket 编程

文章目录一、使用 TCP 的流程图1.1 头文件包含1.2 socket 函数二、使用 UDP 的流程图一、使用 TCP 的流程图  TCP 通信的基本步骤:  TCP 通信的基本步骤中服务器端的情况。1.1 头文件包含 #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <uni

2021-12-16 20:56:51 1094

原创 嵌入式Linux系统编程学习之三十三网络相关概念

文章目录一、网络相关名词的概念1.套接口2.端口号3.IP 地址二、Socket 概念总结一、网络相关名词的概念1.套接口  套接口也叫“套接字”,是操作系统内核中的一个数据结构,它是网络中的节点进行相互通信的门户。它是网络进程的 ID。网络通信,归根结底还是进程间的通信(不同计算机上的进程间通信)。在网络中,每一个节点(计算机或路由)都有一个网络地址,也就是 IP 地址。两个进程通信时,首先要确定各自所在的网络节点的网络地址。  但是,网络地址只能确定进程所在的计算机,而一台计算机上很可能同时运

2021-12-07 20:53:43 316

原创 嵌入式Linux系统编程学习之三十二Linux网络编程介绍

文章目录一、TCP/IP概述二、OSI参考模型及TCP/IP参考模型总结一、TCP/IP概述  协议(Protocol)指通信双方必须遵循的规矩,由 ISO Internet 规定,写在 RPC 文档中。  OSI 参考模型包括应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。  TCP/IP 模型则分为 4 层:应用层,包括 HTTP (超文本传输协议)、FTP(文件传输协议)、TELNET(远程登录)、SSH(安全外壳协议)、STMP(简单邮件发送)、POP3(收邮件);传输层

2021-12-02 20:10:43 2812

原创 嵌入式Linux系统编程学习之三十一线程的属性

文章目录前言一、线程属性初始化二、设置绑定属性前言  pthread_create 的第 2 个参数 attr 是一个结构体指针,结构体元素分别指定新线程的运行属性,各成员属性为:  _detachstate 表示新线程是否与进程中的其他线程脱离同步,如果置位则新线程不能用 pthread_join 函数来同步,且在退出时自行释放所占用的资源。默认为 PTHREAD_CREATE_JOINABLE 状态。这个属性也可以在线程创建并运行以后用 pthread_detach 函数来设置,而一旦设置为 P

2021-11-29 20:17:49 415

原创 嵌入式Linux系统编程学习之三十线程的同步

文章目录一、条件变量1.创建和注销2.等待和激发二、信号灯总结一、条件变量  条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待条件变量的条件成立而挂起;另一个线程使条件成立(给出条件成立的信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。1.创建和注销  条件变量和互斥锁一样,都有静态、动态两种创建方式。  静态方式使用 PTHREAD_COND_INITIALIZER 常量,如下: pthread_cond_t cond=PTHREAD_CO

2021-11-25 21:16:59 560

原创 嵌入式Linux系统编程学习之二十九线程的互斥

文章目录前言一、创建和销毁锁二、互斥锁属性三、锁操作四、加锁注意事项总结前言  在 Posix Thread 中定义了一套专门用于线程互斥的 mutex 函数。mutex 是一种简单的加锁方法,用来控制对共享资源的存取,这个互斥锁只有两种状态(上锁和解锁),可以把互斥锁看作某种意义上的全局变量。为什么需要加锁,就是因为多个线程共用进程的资源,要访问的是公共区间时(全局变量),当一个线程访问时,需要加上锁以防止另外的线程对它进行访问,以实现资源的独占。在一个时刻只能有一个线程掌握某个互斥锁,拥有上锁状态

2021-11-23 20:48:27 779

原创 嵌入式Linux系统编程学习之二十八线程的等待退出

文章目录一、等待线程退出二、线程的取消三、线程终止清理函数总结一、等待线程退出  线程从入口点函数自然返回,或者主动调用 pthread_exit 函数都可以让线程正常终止。线程从入口点函数自然返回时,函数返回值可以被其他线程用 pthread_join 函数获取。  pthread_join 函数的原型为: #include <pthread.h> int pthread_join(pthread_t pthid, void * *thread_return);二、线程的取消

2021-11-21 21:20:35 817

原创 嵌入式Linux系统编程学习之二十七线程的创建和退出

  创建线程实际上就是确定调用该线程函数的入口点,线程的创建采用函数 pthread_create 。在线程创建以后,就开始运行相关的线程函数,在该函数运行完之后,线程就退出,这也是线程退出的一种方式。另一种线程退出的方式是使用函数 pthread_exit ,这是线程主动退出行为。这里需要注意的是,在使用线程函数时,不能随意使用 exit 退出函数进行出错处理,由于 exit 的作用是使调用进程终止,往往一个进程包括了多个线程,所以线程中通常使用 pthread_exit 函数来代替进程中的退出函数 ex

2021-11-18 21:02:47 1068

原创 嵌入式Linux系统编程学习之二十六多线程概述

文章目录一、多线程概述二、线程分类三、线程创建的Linux实现一、多线程概述  进程是系统中程序执行和资源分配的基本单位。每个进程有自己的数据段、代码段和堆栈段,这就造成进程在进行切换等操作时都需要有比较复杂的上下文切换等动作。为了进一步减少处理器的空转时间支持多处理器和减少上下文切换开销,于是就出现了线程。  线程通常叫作轻量级进程,线程是在共享内存空间中并发执行的多道执行路径,是一个更加接近于执行体的概念,拥有独立的执行序列,是进程的基本调度单元,每个进程至少有一个 main 线程。它与同进程中

2021-11-17 21:06:51 266

原创 嵌入式Linux系统编程学习之二十五信号量

文章目录前言一、System V IPC 机制:信号量1. semget 函数2. semop 函数二、Posix 有名信号量总结前言  信号量与信号量集的概念如下。  信号量:是信号量集中的一个元素,就像整型数组中的一个元素。  信号量集:由若干个信号量组成的集合,就像整型数组是由多个整数组成的一样。  每个信号量都有它的值:非负整数,就像数组中的每个元素都有它的值。同时每个信号量也有它在这个信号量集中的编号,就像数组中的每个元素都有下标一样。数组下标从 0 开始,信号量的编号也从 0 开始。

2021-11-16 21:22:42 669

原创 嵌入式Linux系统编程学习之二十四消息队列

文章目录前言一、msgget 函数二、msgsnd 函数总结前言一、msgget 函数二、msgsnd 函数总结

2021-11-14 16:36:23 939

原创 嵌入式Linux系统编程学习之二十三 System V 共享内存机制

文章目录前言一、ftok 函数二、shmget 函数总结前言  共享内存也是进程间(进程间不需要有继承关系)通信的一种常用手段。一般 OS 通过内存映射与页交换技术,使进程的内存空间映射到不同的物理内存,这样能够保证每个进程运行的独立性,不至于受其他进程的影响。但可以通过共享内存的方式,使不同进程的虚拟内存映射到同一块物理内存,一个进程往这块物理内存中更新数据,其他进程可以立即看到这块物理内存中修改的内容。  内存映射和共享内存的区别为:内存映射跟普通文件的读写相比,加快了对文件/设备的访问速度;共

2021-11-12 20:47:57 824

原创 嵌入式Linux系统编程学习之二十二内存映射

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings

2021-11-11 20:27:26 1012

原创 QT5开发及实例学习之十五Qt5位置相关函数

文章目录一、区别概述二、“实例”位置函数的应用总结一、区别概述二、“实例”位置函数的应用总结

2021-11-08 14:04:05 261

原创 嵌入式Linux系统编程学习之二十一命名管道(FIFO)

文章目录前言一、创建、删除FIFO文件1. 用函数创建和删除 FIFO 文件二、打开、关闭FIFO文件前言  无名管道只能在有亲缘关系的进程间通信,从而大大限制了管道的使用;有名管道突破了这个限制,通过指定路径名的形式实现不相关进程间的通信。一、创建、删除FIFO文件  创建 FIFO 文件与创建普通文件很类似,只是创建后的文件用于 FIFO 。1. 用函数创建和删除 FIFO 文件  创建 FIFO 文件的函数原型为: #include <sys/types.h> #inc

2021-11-06 21:19:47 881

原创 嵌入式Linux系统编程学习之二十无名管道(PIPE)

  管道是 Linux 进程间通信的一种方式,如命令 ps -ef | grep ntp 。  无名管道的特点包括:只能

2021-11-05 21:22:04 419

原创 QT5开发及实例学习之十四Qt5排版功能

文章目录一、实现段落对齐二、实现文本排序总结一、实现段落对齐二、实现文本排序总结

2021-11-05 16:19:33 715

原创 QT5开发及实例学习之十三Qt5文本编辑功能

文章目录前言一、设置字体二、设置字号总结前言一、设置字体二、设置字号总结

2021-11-04 14:35:35 929

原创 嵌入式Linux系统编程学习之十九标准管道流

  

2021-11-03 21:05:38 112

原创 嵌入式Linux系统编程学习之十八进程间通信(IPC)简介

  

2021-11-01 21:15:40 474

原创 嵌入式Linux系统编程学习之十七计时器与信号

文章目录一、睡眠函数二、时钟处理一、睡眠函数二、时钟处理

2021-10-27 19:42:27 275

原创 QT5开发及实例学习之十二Qt5图像坐标变换

文章目录前言一、缩放功能二、旋转功能三、镜像功能总结前言  一、缩放功能二、旋转功能三、镜像功能总结

2021-10-27 11:49:00 714

原创 嵌入式Linux系统编程学习之十六用程序发送信号

文章目录一、kill 和 raise 信号发送函数二、sigqueue 信号发送函数总结一、kill 和 raise 信号发送函数二、sigqueue 信号发送函数总结

2021-10-26 19:25:51 202

原创 QT5开发及实例学习之十一Qt5文件操作功能

文章目录一、新建文件二、打开文件总结一、新建文件二、打开文件代码如下(示例):import numpy as np总结

2021-10-23 09:44:16 551

原创 嵌入式Linux系统编程学习之十五sigaction信号处理机制

文章目录一、信号处理情况分析二、sigaction 信号处理注册总结一、信号处理情况分析二、sigaction 信号处理注册代码如下(示例):总结

2021-10-21 19:05:47 327

原创 嵌入式Linux系统编程学习之十四signal信号处理机制

  可以用函数 signal 注册一个信号处理函数,原型为: #include <signal.h> typedef void(*sighandler_t)(int); //函数指针 void (*)(int a) sighandler_t signal(int signum, sighandler_t handler);  signal 的第 1 个参数 signum 表示要捕捉处理的信号,第 2 个参数是个函数指针,表示对该信号进行捕捉处理的函数,该参数也可以是 SIG_DFL(表

2021-10-17 16:11:44 258

原创 嵌入式Linux系统编程学习之十三信号概念

  信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件),是硬件中断的软件模拟(软中断),它是 UNIX 进程通信最古老的方法。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程利用它来通知用户空间进程发生了哪些系统事件。它可以在任何时候发给某一进程,而无需知道该进程的状态。  如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它为止;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程。一个完整的信号生命周期可以分为

2021-10-17 12:25:30 204

原创 嵌入式Linux系统编程学习之十二守护进程

文章目录前言一、守护进程的特性二、daemon 进程的编程规则1.创建子进程,父进程退出2.在子进程中创建新会话前言  daemon 运行在后台,也称作“后台服务进程”,它是没有控制终端与之相连的进程,独立于控制终端,通常周期的执行某种任务。那么一、守护进程的特性二、daemon 进程的编程规则1.创建子进程,父进程退出2.在子进程中创建新会话...

2021-10-14 21:15:42 281

原创 嵌入式Linux系统编程学习之十一Linux进程的创建与控制

文章目录一、fork函数二、进程的终止总结一、fork函数fork 函数原型: #include <unistd.h> pid_t fork(void);  在 Linux 中,fork 函数是非常重要的函数,它从已存在进程中创建一个新进程,新进程为子进程,而原进程为父进程。它和其他函数的区别在于:它执行一次返回两个值。其中父进程的返回值是子进程的进程号,而子进程的返回值为0。若出错则返回-1。因此可以通过返回值来判断是父进程还是子进程。  fork 函数创建子进程的过程为:使用

2021-10-13 19:50:28 451

原创 嵌入式Linux系统编程学习之十Linux进程概述

文章目录前言一、进程标识二、进程的用户ID与组ID(进程的运行身份)总结前言  进程是一个程序一次执行的过程,是操作系统动态执行的基本单位。  进程的概念主要有两点:  第一,进程是一个实体。每个进程都有自己的虚拟地址空间,包括文本区、数据区和堆栈区。文本区域存储处理器执行的代码;数据区域存储变量和动态分配的内存;堆栈区域存储着活动进程调用的指令和本地变量。  第二,进程是一个“执行中的程序”,它和程序有本质的区别。程序是静态的,是一些保存在磁盘上的指令的有序集合;而进程是一个动态的概念,它是一

2021-09-28 22:00:38 366

原创 QT5开发及实例学习之十Qt5主窗口构成

文章目录一、基本元素一、基本元素代码如下(示例):print(data.head())

2021-09-27 16:06:49 683

原创 嵌入式Linux系统编程学习之九基于文件描述符的文件操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

2021-09-17 23:25:21 491

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除