- 博客(24)
- 收藏
- 关注
原创 第一章----arm驱动开发基础知识
pwd:查看当前所在目录cd <路径>:进入输入的路径mkdir <文件夹名>:创建文件夹a. mkdir -p <目录以及子目录>:递归的创建目录以及子目录,例如 mkdir -p div1/div2,在当前目录中创建div1文件夹,在div1文件夹下创建div2文件夹。ls:展示本目录下的文件夹以及文件a. -a:展示全部文件b. -l:展示文件详细信息c. -h:以K,M,G展示文件大小注意:命令的参数都可以组合使用,例如ls -alk。
2025-03-05 10:57:59
746
原创 第一章----Ubuntu基础
在学习嵌入式Linux之前,我们首先要安装好Ubuntu系统,那么我们是直接把我们的电脑系统更新为Ubuntu吗,或者安装双系统?
2025-03-03 10:14:43
1704
1
原创 第四天----线程
Linux 中的线程是指轻量级的执行单元,相比于进程,具有以下特点:(1)进程(Process)是正在执行的程序的实例。每个进程都有自己的地址空间、代码段、数据段和打开的文件描述符等资源。线程(Thread)是进程内的一个执行单元,它共享相同的地址空间和其他资源,包括文件描述符、信号处理等,但每个线程都有自己的栈空间。(2)由于共享地址空间和数据段,同一进程的多线程之间进行数据交换比进程间通信方便很多,但也由此带来线程同步问题。(3)同一进程的多线程共享大部分资源,除了每个线程独立的栈空间。
2025-03-01 09:25:38
801
原创 第三天----进程
匿名管道,有名通道:二者适合发送单条消息数据量小,但是频率高的场景。共享内存:共享内存适合进程间消息发送数据量大,且要求速度快效率高的场景消息队列。
2025-02-27 09:02:54
747
原创 C++错误Call to implicitly-deleted default constructor of ‘SerialPortConfig‘
原因分析:该条报错的原因是无法调用默认构造函数,原因是在结构体中,有一个引用的成员变量,而引用的成员变量必须要初始化,因此我们没办法直接默认构造出SerialPortConfig的变量。解决方法:将SerialPortConfig中的QString &strSN,改为QString strSN;
2025-02-27 08:55:28
452
原创 系统调用read和write的疑问
现在我有一个中文文档,里面是一些中文的句子,然后我有一个char buffer[1]的缓冲区,我通过read中文文档,然后把数据写入到标准输出中,此时终端却正常打印,而不是显示乱码。
2025-02-21 17:26:37
391
原创 数组---- 二分查找法
对于二分查找的算法来说,这种算法又叫做折半查找,他也是要求存储数据的结构必须具有随机存储和访问的特性,因此对于链表来说也是没有的。并且这种算法要求一个必须的条件:元素必须有序排列,这里的有序排列不仅仅是说对于升序或者说是降序,任何有序的都可以,比如一组数组中全是[false, false,false,true,true…]对于这种来说,也是符合有序这一条件的,因此有序的定义是非常广泛的,并不是说只是升序或者降序。● 二分查找主要是在有序数组中查找target的问题。
2025-02-19 11:21:03
300
原创 数组-双指针
数组与链表共同组成了各式各样的数据结构,他们是数据结构的基石,因此,这章节我们就来学习数组的一些常见的技巧,这一类的技巧,普遍的都是会着不难,难者不会,但是我相信,只要读者做过几道题目,那么我们就可以在短时间内学会这一系列的知识。双指针技巧是的,数组中也会有双指针技巧,首先这一章节我们要学习的就是在数组中的双指针用法。这一部分来说的话并没有什么具体的模板,具体就是根据实际情况去编写代码,具体的情况有原地修改…等,后续还会继续添加删除有序数组中的重复项。
2025-02-19 11:08:19
711
原创 第三天-进程
这个函数可以在代码中,执行命令行中的命令,相当于启动另一个进程,我们以ping为例。从输出结果我们可以看到,当我们程序启动后,会先执行另一个进程的程序(ping),当ping执行完成之后,会再返回我们刚刚的程序继续执行。通过 ps -ef命令,可以查看进程。
2025-02-05 17:48:06
619
原创 第二天-文件IO与系统调用
首先我们先学习文件IO,文件IO是什么呢?文件IO就是C语言库函数中进行IO操作的函数,这些函数的实现实际上是调用了系统调用,系统调用可以理解为也是函数,他是程序员要使用内核提供服务的接口,也就是说我们通过系统调用可以使用内核提供的服务,文件IO仅仅是把系统调用给封装了一层,那么为什么要封装这一层呢?实际上是为了代码的可移植性。
2025-01-28 18:49:05
703
原创 第一天-嵌入式应用开发介绍
Arm+Linux主要分为三部分:最底层的内核,中间层的驱动开发,最顶层的应用开发。越往下层难度越大,当然薪资与发展也会越可观,但是由于Linux社区的逐渐完善,目前市面上的产品对于Linux的支持都是非常完善的,因此对于真正困难的内核这一部分,其实岗位需求并没有很多,除非一些大厂需要。而本章节,我们学习的嵌入式Linux应用开发属于Arm+Linux这一条路线的最顶层的内容。例如最基础的文件IO,系统IO(系统调用),线程,进程,信号,内核,网络编程等等。以上就是对于嵌入式应用开发的基础介绍。
2025-01-27 17:21:04
344
原创 STM32----输出比较
输出比较是定时器的一种特殊的模式,与之相对应的还有输入捕获模式。输出比较最大的用处就是用来生成PWM波形,那么什么是PWM波形呢?PWM波形就是脉冲宽度调制(PulseWidthModulation,PWM)简称脉宽调制。通俗讲,PWM是一种对模拟信号电平进行数字编码的方法。简单的理解就是数字信号到模拟信号的换算。由于我们在单片机中,只有0和1两种,0代表0v,1代表3.3v,那么我们应该怎么表示一个中间的电压呢?
2025-01-22 15:09:49
864
原创 git使用教程----第四天
本章节我们学习git的分支管理。分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,你可以创建一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上。
2025-01-22 12:07:42
1009
原创 git使用教程----第三天
远程仓库远程仓库是什么呢?远程仓库就是一个不在你电脑上的版本库,实际使用中,远程仓库通常都是这样的。有一个服务器,服务器上部署了远程仓库,每个人的git仓库,都是直接连接这个服务器拉去下来的,然后当每个人修改完成之后,再推送到远程仓库。但是在我们学习过程中,我们不可能说为了学习git的远程仓库,而去专门的购买一台服务器并且部署git仓库,这太麻烦了。因此我们选择用github来模拟远程仓库,在实际企业的使用中,完全可以把企业的远程仓库当做是github中的仓库,操作方法都是一致的。
2025-01-21 16:15:01
316
原创 STM32----定时器的基本功能
本章节叫做定时器的基本功能,那么定时器的基本功能是什么呢?定时器的基本功能就是定时。我们可以给定时器配置一定的时间,从而实现每隔一定的时间,就产生一次定时器中断(与之前的外部中断区分),然后我们就可以在定时器的中断中去做一些处理。定时器中断与之前的外部中断不同,它也属于中断的一种,在之前的小节中,我们以外部中断为例介绍了中断应该如何使用,本节我们就以定时器的中断为例。定时器的基本功能是定时,那么他还有什么功能呢?
2025-01-20 20:36:35
2451
原创 STM32----中断
今天,我们来分享stm32的中断。所谓中断是指系统发生某一事件后,CPU暂停正在执行的程序转去执行处理该事件的程序过程,处理中断事件的程序称为中断服务程序,产生中断信号的那个部件称为中断源。硬件的中断机构与处理这些中断的程序统称为中断系统。当中断发生时,硬件机构自动的进入响应中断过程,由操作系统的中断服务程序对中断事件进行处理。在这里说一下,中断服务函数本质上就是一个函数,但是函数的名字已经被特别的规定好了,具体名字要去哪里查询在下面的内容中我们会具体讲解。
2025-01-20 20:08:50
746
原创 git使用教程----第二天
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
2025-01-20 18:32:21
1145
原创 git使用教程----第一天
mkdir:XX(创建一个空目录XX指目录名)pwd:显示当前目录的路径。gitinit把当前的目录变成可以管理的git仓库,生成隐藏.git文件。gitaddXX把xx文件添加到暂存区去。gitcommit–m“XX”提交文件–m后面的是注释。gitstatus查看仓库状态gitdiffXX查看XX文件修改了那些内容gitlog查看历史记录。
2025-01-20 14:21:34
626
原创 STM32----时钟
在上一节中,我们学习了什么是GPIO,以及如何点亮LED以及通过按键控制LED灯,在本节我们将学习STM32的极其重要的一个概念时钟。什么是时钟呢?时钟是单片机的脉搏,是系统工作的同步节拍。单片机上至CPU,下至总线外设,它们工作时序的配合,都需要一个同步的时钟信号来统一指挥。时钟信号是周期性的脉冲信号。STM32有很多外设器件,每个器件的时钟信号不一样,所以要将一个固定的信号频率进行倍频/分频处理,达到每个外设需要的频率。时钟信号的分频就像树的分支一样,这就是时钟树。
2025-01-19 18:10:22
938
原创 STM32----GPIO
下面我们以LED点亮为例:打开这个文件后,如下图所示,我们找到相应的目录,例如我们现在要点亮LED灯,那么肯定是要操作GPIO的,因此我们可以通过目录中的GPIO直接找到我们需要的代码。我们之间看这个文件中的代码即可。打开后我们进入到如下的这个页面,我们可以清楚的看到,首先代码调用了一个叫做RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);,这个函数,然后又定义了。
2025-01-19 17:39:46
828
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅