- 博客(20)
- 收藏
- 关注
原创 单片机基础
(4)向Group中添加C语言文件: 点击左上方text按钮,ctrl + S将文件保存到工程对应的目录(为文件起一个名字,如 main.c),双击左侧Grpup,点击Add 将文件加入到对应的Group下。(1)点击"Target Options"按钮,点击"Output"选项中的"Create HEX FILE"选项,生成hex文件。集成度比较高,将所有功能集成到芯片中(CPU、RAM、ROM、定时器、UART、IO),简单控制, 成本低。图形处理、图形渲染(GPU性能越好,图形显示的质量越好)
2025-09-02 21:46:57
327
原创 线程补充
只能加锁一次,加锁期间不能再次加锁,也不能强制占有一个已经加锁的锁资源,必须等待锁。如果加锁失败则表示有人占用资源,必须等待其余人释放锁资源才能加锁成功。进程间的通信(由于进程间的空间相互独立,需要采用管道来实现通信),申请资源会阻塞等待,直到占用资源的任务释放资源,资源数不为。,则会阻塞等待,直到有任务释放资源,才能拿到资源并继续向下。读取数据时,如果管道中没有数据则阻塞等待有数据写入才能读出。写入数据时,如果管道存满则阻塞等待有数据读出才能继续写入。
2025-08-19 21:08:13
697
原创 进程与线程
进程:是程序动态执行的过程,包括创建、调度、消亡程序:存放在外存中的一段数据的集合进程的创建进程空间的分布每个进程运行起来后,操作系统开辟0 - 4G虚拟内存空间进程空间:用户空间内核空间(不允许用户访问):文本段(文本区)数据段(数据区)系统数据段(堆区、栈区)存放代码和指令字符串常量、已初始化全局变量静态变量、未初始化全局变量/静态变量 数据区存放数据特点: 未经初始化值为0值 编译时开辟空间程序结束时回收空间堆区(malloc。
2025-08-18 20:23:47
689
原创 文件IO补充和目录IO
操作方式:1.打开文件 2. 读取目录文件中的目录项 3. 关闭目录文件。参数描述:第一个逗号以前为文件,中间为偏移量,最后为定位点。r:读权限,决定用户是否能够查看目录下所有文件名。w:写权限,决定用户是否能够在目录下新建文件。SEEK_SET //文件开头位置。根据已经打开的文件描述符获得文件流指针。x:执行权限,决定用户是否能够进入目录。SEEK_CUR //文件当前位置。找到文件对应的磁盘空 间位置 */SEEK_END //文件末尾。读取并返回下一个目录项的信息。成功返回实际写入的字节数。
2025-08-13 21:10:27
823
原创 IO接口
O_WRONLY | O_APPEND | O_CREAT, 0664(追加写入没有创建文件,清零)O_WRONLY | O_CREAT | O_TRUNC , 0664(只写没有创建文件,清零)O_RDWR | O_APPEND | O_CREAT, 0664(追加读写没有创建文件,清零)O_RDWR | O_CREAT | O_TRUNC, 0664(读写没有创建文件,清零)}(所有权限都有这对应位数上的值位7,否者根据需要加的权限让对应的位数上的值变为0)文件不存在创建(注意要给定创建文件的权限)
2025-08-12 21:13:07
296
原创 linux中shell操作,IO操作
txt(这个就是在0-9以file作为开头的文件)( ls file?ls file[1,3,5].txt (查看,file1.txt,file3.txt,file5.txt)echo "hello" >file.txt (将文件覆盖到file.txt文件中)echo "hello">>file.txt(将文件追加到file .txt文件中)ls file[ 1-5 ].txt (查找file 从1到5的文件)一般设备通常为字符设备文件。ls file [ ^3 ].txt (查找file3之前的文件)
2025-08-11 23:11:49
850
原创 链表的其它操作
链表的排序(冒泡排序)定义三个指针,第一个指针指向链表第一个数,第二个指针指向第二个数,第三个指针指向结束条件当指向第二个数的指针与结束指针相同时,结束此次判断,直到完成排序。选择排序(先定义一个最小的数,循环一次找到链表中最小的数更新这个最小的数,并把他赋值给第一个节点,之后从赋值后的节点出发继续重复以上操作直到完成排序)查找链表的中间节点(在这需要定义一个快慢指针,快指针每走一步慢指针走一步当快指针走到链表的末尾时慢指针刚好走到数据的中间)查找链表的第倒数K个节点。
2025-08-11 12:05:46
186
原创 数据结构概念
循环列表:能够通过第一节点快速找到最后一个节点,能够通过最后一个节点快速找到第一个节点(首地址的前一个节点地址存放位是最后一个节点的地址,最后一个节点的最左端地址位存放位是首节点的地址)尾插法创建链表(新的数据会在链表的最后面不断插入,在这需要定义两个指针,一个指针用于申请空间存储后续数据,一个指针用于遍历创建的链表,从而找到链表的尾地址,方便前一个指针与链表相连接)只能通过链表节点找到后一个节点,访问链表元素的方向是单向的(最后一个节点的存放地址的位置为空)无法利用小的空间,必须连续的大空间。
2025-08-08 19:42:46
344
原创 指针与函数
空指针:指针指向内存地址为0x0的指针用·NULL表示不可使用未经初始化的指针否则程序容易崩。*:获得指针指向的空间如果直接使用*表达式其表达式的值为该指针指向空间的值,*接的内容必须为指针类型,不可为普通变量类型。若是对*p或*q操作改变的是指针指向的空间,指针指向不变。实参将地址传给形参,新参是指向实参的指针,可以利用形参修改实参的值,函数体内部想修改函数体外部的值的时候采用值传递。函数名(&实参数据类型1,&实参数据类型2,&实参数据类型3.·····)指针:指针就是地址但是指针具有指向地址的特性。
2025-07-28 20:35:24
260
原创 有关数组的函数设计
extern 在linux操作系统中的运行方式是 gcc 文件1.c 文件2.c····//(这些文件大部分是外部声明的文件,但有一个是包含main的执行文件)基本格式:1int 函数名(数组类型 数组名[],len···)//len取决于用户定义,可以根据用户的输入而使用,int决定的是返回值类型。不同于前面的函数传递数组传递到函数体内部和外部操作的是同一数组,及对内部进行操作后外部也会跟着改变。需要严谨的代码逻辑,多行代码,考虑使 用函数。带参宏只是代码的替换,没有调用传参过 程。
2025-07-24 20:27:51
313
原创 基础函数的实现
栈区是操作系统管理区域,频繁被申请释放,所以未经初始化值为随机值 代码执行到变量定义时开辟空间(栈空间),代码执行超过变量作用域回收空间(栈空 间)使用形式:函数名称(实际参数1,实际参数2,····)//括号中的实际参数个数要与形式参数个数保持一致。}//对于形式参数数据类型的定义并不受前面函数类型限制,而是取决于使用者需要使用的类型。对于全局变量未初始化的值全部默认为零值,但是局部变量未初始化的值默认为随机值。如果被调函数在主调函数的上方定义,定义时已经完成函数的声明。
2025-07-23 20:55:33
829
原创 二维整形数组
定义 char str[元素个数]={"字符串"}//元素个数必须能存放的下包括末尾的‘\0'的元素个数。char ch[行下标][列下标]={"字符串1","字符串2"...};对于数组的访问行数与列数下标都是从零开始到n-1或m-1结束;gets(str);//可以接收包括空格的字符但是容易出现警告。连续性:数组所占空间大小=数组类型所占大小×行数×列数。/对与数组而言行数可以省略但是列数不可省略。数组名[行数n][列数m] /puts(str)//打印字符且换行。字符型数组的输入输出格式。
2025-07-22 20:24:20
203
原创 c语言排序
len=strlen(str)//这里得到的就是终端输入得到的字符串长度。统计字符串长度:统计字符串开头到‘\0'的以前的长度。需加上头函数#include<string.h>数组接受未知个数的数据。
2025-07-21 20:53:47
98
原创 辅助函数与数组1
数组访问格式:数组名[元素下标](元素下标可以是常量变量表达式),数组元素不可越界最高访问到n-1为元素。break跳出当前循环(for ,while ,do while)或者switch语句。continue跳出当前循环继续执行下一次循环(即跳过某次循环)局部初始化(没有给定初值的元素全部给定默认初值为0)数组的访问:数组不能对整体操作,只能对单个元素操作。双层for循环外层执行一次内层循环一遍。元素个数通常为常量或者常量表达式;goto多用于出错处理时使用。数据的存储具有连续性和有序性。
2025-07-19 16:22:30
127
原创 分支结构与循环结构
switch后面必须为整形表达式,case后面必须为常量(这个常量必须时前面整形表达式所能得到的值)switch 会与case 后面的值比一次,然后顺序执行遇到break或switch结束。注意:if,else后面必须接表达式if可以脱离else单独使用但是else不可脱离if;如果if else不加{ }1逻辑与左边为假右边便不再计算;2逻辑或左边为真右边便不在计算;三目运算符,单目运算符,赋值运算符都是从右往左依次结合。中,里层结束后,不加。
2025-07-18 20:40:53
129
原创 函数的输入输出
如果接收非输入控制符,需要在屏幕中将所有字符原封不动输入。特殊内容(注:-(左对齐大于高位用0补齐)是用户结束数据的标志,所以不会读取到代码中。printf打印输出逗号以后的内容。中尽量少出现非输入控制符。
2025-07-17 19:33:43
159
原创 c语言基础2
eg:"hello"='h'+'e'+'l'+'l'+'o'+'\0'共占六个字节。语言中不同数据类型运算需要将数据类型转换为同一种类型再进行运算和处理。能够放在等号左边的值称为左值,左值只能是变量,不能为常量或者表达式。能够放在等号右边的值称为右值,右值可以是变量、常量、表达式。如果小数据放入大空间,需要补位,有符号数补符号位,无符号补。不同类型运算时需要将低精度类型转换为高精度类型。浮点数类型赋值给整数类型,舍弃小数点后的精度。进行数据运算和数据处理时会统一转换为。整数类型赋值给浮点数类型,小数点扩。
2025-07-16 19:18:41
214
原创 c语言基础
外存造价便宜,读取慢掉电数据丢失(gcc文件存放),内存将数据和指令加载到cpu中运行。泊尔类型(非0即1)(ture(1)false(0))查看泊尔类型时需要加识别。有符号数在内存中存放数字对应的二进制补码形式,无符号数在内存中存放数字对应的。有符号数在内存中存放数字对应的二进制补码形式,无符号数在内存中存放数字对应的。根据存储空间大小不同可以分为:短整型、整形、长整型(根据存储空间大小不同可以分为:短整型、整形、长整型(整数类型可以分为有符号类型和无符号类型(整数类型可以分为有符号类型和无符号类型(
2025-07-16 18:58:50
372
原创 嵌入式学习第一天
若已经处于文件test 1下 cp file.txt cd ../txt2。如果是文件夹则 cp test1 test2 -rf(将源文件拷贝到目的文件下)1.mv scrpath dstpath(江源目录下文件移动到指定目录下)touch 创建普通文件 rm 删除普通文件(系统中文件命名严禁空格)例:将test1文件夹中的文件file.txt 拷贝到test2中。ls 文件名 -a:查看当前目录下的所有隐藏文件。ls 文件名 :查看当前目录下所有文件。2.就文件改名为新文件。
2025-07-15 21:45:50
322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅