- 博客(40)
- 收藏
- 关注
原创 嵌入式学习笔记--Linux系统编程阶段--DAY08线程
在我们的日常生活中,我们在使用电脑的过程中,用的QQ 微信 钉钉 迅雷.....每一个软件都相当于一个进程(进程之间都是独立的),QQ的群组中,我们添加的用户都是线程--进程中是肯定包含线程,换句话说,每一个进程中最少都要有一个线程,当然也可以有多个线程。进程结束了,进程中的线程也就结束了。多进程:同时打开两个QQ程序,双开多线程:同时跟多个好友聊天如果将进程比作一个工厂,那么线程就相当于工厂中的工人,工厂--提供资源的(供电,食堂,厕所,办公场合)---为工人提供资源的。
2025-09-07 13:20:37
978
原创 嵌入式学习笔记--Linux系统编程阶段--DAY07进程间通信--存储映射和共享内存
存储映射使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区中取数据,就相当于读文件中的相应字节。于此类似,将数据存入缓冲区则相应的字节就自动写入文件。这样,就可在不适用 read和 write 函数的情况下,使用地址(指针)完成I/O操作。使用存储映射这种方法,首先应通知内核,将一个指定文件映射到存储区域中。这个映射工作可以通过mmap 函数来实现。这个文件仅仅是用来进程间通信的桥梁。
2025-09-06 18:50:22
659
原创 嵌入式学习笔记--Linux系统编程阶段--DAY06进程间通信-消息队列
主要应用场景是多对多的进程间通信。“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含。消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。消息队列就是一个消息的(链表的每一个节点就是一个消息队列)。可以把消息看作一个记录,具有特定的格式以及特定的优先级。
2025-09-06 17:10:28
614
原创 嵌入式学习笔记-Linux系统编程阶段-DAY05进程间通信-管道
3、 open 以只读、 只写方式打开 FIFO 时会阻塞, 调用 read 函数从 FIFO 里读数据时 read 也会阻塞。4、 通信过程中, 读进程退出后,写进程向命名管道内写数据时, 写进程也会(收到 SIGPIPE 信号) 退出。、管道所传送的数据是无格式的,这要求管道 的读出方与写入方必须事先约定好数据的格式,如多少字节算一个消息等。在创建管道的时候,管道最好只要一个方向传递信息,不要让他双向传递,否则可能会自己写自己读。,数据一旦被读走,它就从管道中被抛弃,释放空间以便写更多的数据。
2025-09-06 12:10:09
1067
原创 嵌入式学习笔记--Linux系统编程--DAY04进程间通信-信号
进程一般是单独执行在内存空间的,不同的进程各自完成资源的申请、管理和使用。不同的进程之间存在【进程隔离】有些程序需要不同的进程之间进行相互配合来实现相应的功能,这个时候就需要进程间进行通信。一个进程收到一个信号的时候,可以用如下方法进行处理:1)执行系统默认动作 对大多数信号来说,系统默认动作是用来终止该进程。2)忽略此信号(丢弃) 接收到此信号后没有任何动作。3)执行自定义信号处理函数(捕获) 用用户定义的信号处理函数处理该信号。
2025-08-31 17:49:22
1049
原创 嵌入式学习笔记--LINUX系统编程--DAY03进程控制
程序:程序是存储在存储介质上的一个可执行文件---静态的进程:进程是程序的执行实例。可以说进程就是正在执行的程序。程序是一些指令的集合,而进程是程序的执行过程,这个过程的状态是变化的,包括进程的创建、调度和消亡。“换魂不换壳”不换:进程ID(PID)、父进程、打开的文件描述符、信号设置、环境变量等全部保留原样。全换:进程的代码段、数据段、堆栈等被彻底替换为指定的新程序。一山不容二虎exec调用成功后没有返回值,因为原来的程序代码已经被完全覆盖了,执行逻辑永远跳不到exec之后的代码。
2025-08-30 22:12:03
1702
原创 嵌入式学习笔记-LINUX系统编程阶段-DAY01脚本
定义变量:变量=变量值变量取值:$变量名注意:=两边不能有空格清除变量:unset读取变量:readread num #读取变量read str #读取字符串只读变量:readonly导出环境变量:(只导出当前终端,与其他无关)先查看环境:终端输入 env导出环境:export。
2025-08-26 23:12:49
948
原创 嵌入式学习笔记--MCU阶段--DAY12实时操作系统rt_thread1
RT-Thread 版权属于上海睿赛德电子科技有限公司,于 2006 年 1 月首次发布,初始版本号为 0.1.0, 经过 10 来年的发展,如今主版本号已经升级到 3.0,累计开发者达到数百万,在各行各业产品中装机量达到了惊人的 2000 多万,占据国产 RTOS 的鳌头RT-Thread 是一款 “开源免费” 的实时操作系统,遵循的是 GPLv2+的许可协议。
2025-08-14 18:06:29
1325
原创 嵌入式学习笔记-MCU阶段-DYA11位带与看门狗
在51单片机中,可以很方便的对单个IO口进行写入操作,51单片机中:按位操作,真正操作的的是类似于我们STM32中的ODR寄存器或者IDR寄存器中的单个bit。
2025-08-10 11:37:48
465
原创 嵌入式学习笔记-MCU阶段--DAY09
OLED屏幕的基本特性:大小:0.96寸(对角线)分辨率:128*64(0.96寸的屏幕上总共有128*64个像素点)像素点:成像的最小单位单色屏:由两种颜色组成,背景色和前景色都是只有一种,黑白 黑和蓝......像素点大小:1bit 0或者1多色屏幕中像素点的颜色显示格式:RGB565 RGB888RGB565的颜色显示格式:一个像素点大小就是2字节OLED屏幕的IO口:写操作:保存的图像或者字符在OLED屏幕中保存方式:128*64---像素点个数。
2025-08-01 17:14:41
763
原创 嵌入式学习笔记--MCU阶段--DAY08总结
第一周讲解内容:基础外设:LED KEY beep通信:USART SPI IIC WIFI(结合蓝牙的使用) NB模块片上外设:ADC DMA TIM 中断传感器:DHT11。
2025-07-21 17:15:09
669
原创 嵌入式学习笔记--MCU阶段--DAY07
在我们使用的单片机中分类:系统定时器--属于内核,功能比较简单,主要就是用于做一些简单的延时(ms us ),时间片。ST公司集成的定时器:基本定时器:(中文参考手册15章节)tim6和tim7,功能是和系统定时器一样的通用定时器:(中文参考手册14章节)TIM2、TIM3、TIM4和TIM5,集成了基本定时器的功能,另外还包含了输入捕获和输出比较---重点高级定时器:(中文参考手册13章节)tim1和tim8,功能复杂,主要用于电机的精密控制集成了通用定时器的功能,另外死区和刹车的设置。
2025-07-21 17:11:47
630
原创 嵌入式学习笔记--MCU阶段--DAY06DHT11练习
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术, 确保产品具有极高的可靠性与卓越的长期稳定性。传感器大致分为两类:数字传感器---接口输出的就是数据(二进制) 成本高模拟传感器--接口输出的是模拟量(电压)--->ADC-->MCU读数据 功能简单 价格低。
2025-07-16 17:40:05
358
原创 嵌入式学习笔记--MCU阶段-day05DMA
直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。两个DMA控制器有12个通道(DMA1有7个通道, DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。DMA--控制器直接连接在CPU上的。
2025-07-16 17:38:25
593
原创 嵌入式学习笔记--MCU阶段--DAY04AD转换
12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。(扫描模式是使用在多通道中)模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz(频率过高,会导致转换的数据不准确),它是由PCLK2经分频产生。
2025-07-11 11:39:44
480
原创 嵌入式学习笔记--MCU阶段--day03中断
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并且立即转入处理新情况的程序(中断服务函数),处理完毕后又返回原被暂停的程序继续运行。
2025-07-11 11:34:26
1225
原创 嵌入式学习笔记-MCU阶段-DAY02串口
通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信波特率:单位时间(秒)内传输数据的位数 9600单位时间内传送的码元。
2025-07-08 17:25:18
1051
原创 嵌入式学习笔记-MCU阶段-DAY01
恭喜大家完成了C语言的学习,现在咱们来到咱们的硬件MCU阶段,咱们这里的工程用的是keil,环境搭建不再赘述,希望大家在这一阶段仍然学的愉快。
2025-07-08 17:21:05
1154
原创 嵌入式学习笔记C语言阶段--17共用体和枚举
枚举是 C 语言中的一种用户自定义数据类型,它用于定义一组命名的整数常量。枚举类型可以提高代码的可读性和可维护性,因为使用有意义的名称来代替数字,使代码更易于理解。以下是一个简单的枚举示例,用于表示一周的七天:代码解释 枚举类型定义: 定义了一个名为 的枚举类型,包含了一周七天的名称。默认情况下, 的值为 0, 的值为 1,依此类推。函数 :该函数接受一个 类型的参数,并根据传入的值使用 语句打印相应的信息。 函数:声明一个 类型的变量 并初始化为 ,然后调用 函数打印信息。
2025-06-15 15:30:00
307
原创 嵌入式学习笔记C语言阶段--16函数指针
函数名对于当前函数而言是一个【指针常量】,对于当前函数在内存【代码区】的空间首地址。函数指针的类型是根据当前函数的【返回值类型】和【参数类型】决定。函数功能主体不变,同时引入不同的操作规则/函数指针,完成当前函数的功能多样式实现,生活中案例有,红白机/游戏机,擦丝器,可替换刀头螺丝刀。如果需要定义一个函数指针用于存储。函数在内存中的首地址。
2025-06-15 13:00:00
315
原创 嵌入式学习笔记C语言阶段--14可变长数组
目标存储类型为 Student *,数组中的每一个元素都是一个学生结构体指针。设计结构体类型来描述数组,增强数组的功能。数组容量一旦确定无法修改。数组的存储类型无法修改。数组不得作为返回值类型。
2025-06-14 11:01:57
432
原创 嵌入式学习笔记C语言阶段--15字符串操作
字符串在开发中是非常重要数据载体,常用于数据传递和存储,具备较强的稳定性和安全性(可以进行加密操作)。针对于字符串操作涉及到拼接,拷贝,查询...
2025-06-14 11:00:42
1433
原创 嵌入式学习笔记C语言阶段--12链表(1)
类似于火车的结构,每一个车厢之后有固定的链接方式,但是每一个车厢相互独立,可以任意组合,任意调节。车头类型和中间的车厢不一样车厢的相对尺寸一致,同时链接方式和其他车厢一致车厢内部设计结构存在不同。
2025-06-13 10:00:00
517
原创 嵌入式学习笔记C语言阶段--11预处理与条件编译
C 语言代码编译流程为 预处理 --> 编译 --> 汇编 --> 链接。预处理是整个程序编译流程的开始,针对于预处理过程,重点关注。
2025-06-12 11:30:00
994
原创 嵌入式学习笔记C语言阶段--10结构体
struct 结构体名称数据类型1 成员变量名1;// Field数据类型2 成员变量名2;数据类型3 成员变量名3;数据类型4 成员变量名4;/*struct 是定义结构体关键字,当前结构体的名称为 student数据类型名称为【struct student】*//*name 成员变量,数据类型为 char 类型数组,容量为 32*//*id 成员变量,数据类型为 int 类型*/int id;/*age 成员变量,数据类型为 short 类型*/
2025-06-12 10:30:00
960
原创 嵌入式学习笔记C语言阶段--09动态内存管理
在前面章节,讲过,数组容量一旦确定,没有办法修改。静态定义,此种方式定义好数组容量后,无法进行修改。但是这种方式没有办法满足后续的开发任务,所以我们需要用到动态内存管理。
2025-06-11 16:00:00
564
原创 嵌入式学习笔记C语言阶段--08指针复习
int:数组中所存储数据的类型arry:数组名,指针常量,保存数组首元素首地址5:数组容量{10,20,30,40,50}===》初始化赋值数据类型 * 指针变量名 =初始化地址;数据类型:CPU对指针指向空间进行访问时,会数据类型的限制1)限制访问字节数2)限制访问的数据类型*: 指针变量标识指针变量名:指针变量的名称 要求见名知意,动宾结构,约定俗成初始化地址:初始化指针指向的空间,一般初始化为 NULL;
2025-06-11 15:00:00
370
原创 嵌入式学习笔记C语言阶段--08指针与地址
物理内存:内存条虚拟内存:由OS来提供计算机中最小的数据存储单位:字节----》8个bit位计算机按照最小的数据存储单位--》字节,对内存空间进行逐一编号,每一个编号对应一个字节的内存空间。拓:int类型数据在32或64位计算机中占4个字节,每个字节都有对应的地址编号,后续可以根据首字节的地址编号加上int类型数据的字节大小,进行访问。指针指向的是地址。指针指向的是地址,地址是没有类型的,只是一串编号。数据类型 * 指针变量名 = 初始化地址;
2025-06-10 18:27:37
626
原创 嵌入式学习笔记C语言阶段--07数组
数据类型 数组名[容量]={初始化元素};数据类型:规定数组里所存放数据的数据类型 ,注意数据类型一致性问题。数组名:arry 见名知意,约定俗成,动宾结构容量:数组所能存储的数据的个数,后续配合数组下标使用,数组的下标从0开始到容量-1结束初始化赋值:数组定义的时候需要进行初始化赋值,如果不进行初始化赋值,后面会出现野值问题数组的容量初始化赋值//规定了数组可以存储5个int类型的数据,而且都进行了初始化赋值//20。
2025-06-10 18:21:51
579
原创 嵌入式学习笔记C语言阶段--06函数
函数是代码中基础封装内容,主要解决代码中重复出现的功能模块,需要重复使用,并且是不同的位置使用,需要利用函数解决,主要解决的问题代码冗余代码阅读性极差代码的可维护性极差函数需要大量的练习,整理,总结之后才可以完全掌握!!!
2025-06-09 16:38:59
997
原创 嵌入式学习笔记C语言阶段--05循环结构
简单,初步解决代码中重复功能问题,如果按照基本的 CV 大法实现,会导致以下问题代码冗余代码阅读性极差代码的可维护性极差常用的循环结构有while 循环结构do while 循环结构for 循环结构。
2025-06-09 16:34:36
445
原创 嵌入式学习笔记C语言阶段--04分支结构
分支结构在开发中使用非常多,主要用于条件判断,条件过滤,情况处理。。。开发中的分支结构有if 分支if else 分支if else if 分支switch case 选择分支结构。
2025-06-08 20:48:30
739
原创 嵌入式学习笔记C语言阶段--03运算符
逻辑或表达式,如果出现了一个任何真条件,整个表达是结果已经明确为真,计算机同理考虑降低计算复杂度,提升效率,直接终止整个表达式运行。自增自减运算符在变量之前,首先完成自增自减操作对变量的数据存储修改,执行完毕之后,提取变量存储数据内容,参与当前代码执行。自增自减运算符在变量之后,首先提取当前变量存储的数据内容参与代码执行,提取之后立刻执行自增自减操作,修改变量存储数据。利用逻辑运算符短路原则可以优化条件,根据条件的权重将条件进行排列,使用最少的条件完成整个表达式的判断,提升代码效率。
2025-06-08 20:44:10
1167
原创 嵌入式学习笔记C语言阶段--02数据存储、常量和变量
生活中不会发生改变的量都是常量,或者可以说开发中无法修改的数据是常量。数据类型 变量名 = 初始化数据;数据类型:明确约束当前变量可以存储的数据类型,有且只允许存储对应类型数据,请严格遵守【数据类型一致化要求】变量名: 【约定俗成,见名知意】,全英文。操作使用当前变量的名称,具备一定范围的唯一性。= : 赋值号,将赋值号右侧的数据赋值给左侧的变量初始化数据:针对于当前变量数据类型,和业务场景所需的必要初始值。后续开发中任何一个变量必须在定义之后,进行初始化操作,避免【野值】问题。
2025-06-07 17:30:00
1036
原创 嵌入式学习学习笔记C语言阶段--01Linux基本命令
开源免费的终端开发软件,支持各种插件,学习路线较为陡峭,需要掌握基本的文本编辑,操作和代码实现。Vim 之父 Bram Moolenaar可以利用安装指令安装vimsudo apt update #更新软件包sudo apt install vim #安装vimsudo apt install vim-gtk #安装完整版的 Vim(包含 GUI 和更多功能)vim --version #安装完成后查看版本。
2025-06-07 13:45:00
933
原创 嵌入式学习笔记C语言阶段--环境搭建
不同于以往你单纯去学习C语言的时候,在windows环境下进行编程,咱们嵌入式的学习中C语言是在Linux环境下进行练习的,为什么要这样呢?因为后续大家去做嵌入式开发与Linux是无法分割的,所以咱们在学习语言阶段就要在Linux环境中进行,这样可以提前熟悉适应Linux环境。所以咱们本章,从环境搭建开始。相信你在学校学习的过程中也有某个瞬间想认认真真的搭建个环境,但是面对各种各样的教程,因为某个步骤的缺失,可能走到一半就走不下去了,然后浇灭了你学习的热情。
2025-06-06 15:47:11
1220
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1