自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 shell命令(文件搜索、文件处理和压缩解压)

当然,之后出现 tar 程序的改进版本,可以实现在合并归档的同时进行压缩。使用“ ls –l” 命令可以查看到新创建的链接文件所指向的目标文件名。该运算符表示只要所给的条件中有一个满足 时,寻找条件就算满足 OPTIONS :描述命令所有的参数或选项。软链接(符号链接)是利用文件的路径名建立链接。硬链接是利用 Linux 中为每个文件分配的物理编号—— inode 建立链接。①and :逻辑与,在命令中用 -a 表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足。

2024-06-18 14:04:33 1678

原创 shell命令(权限和输入输出)

随着各式 Linux 系统的图形化程度的不断提高,用户在桌面环境下,通过点击、拖拽等操作就可以完成大部分的工作。然而,许多 Ubuntu Linux 功能使用 shell 命令来实现,要比使用图形界面交互,完成的更快、更直接。英文单词 shell 可直译为“贝壳”。“贝壳”是动物作为外在保护的一种工具。可以这样认为, Linux 中的 shell 就是 Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互。

2024-06-17 16:30:05 1134

原创 Linux C语言:字符串处理函数

使用strncpy函数将src的前8个字符复制到dest中。由于源字符串的长度大于或等于n,我们需要在dest的后面添加'\0'。将给定的大写字母转换为对应的小写字母。如果给定的字符不是大写字母,则不对它做任何处理,也不会报错或者警告。如果传入的字符是大写字母,则返回该字母的小写形式;如果传入的字符不是大写字母,则原样返回该字符。1) 如果源字符串的长度大于或等于n,则目标字符串将不会以'\0'结尾,需要手动添加'\0'。2) 如果源字符串的长度小于n,则复制完源字符串后,会用'\0'填充剩余的空间。

2024-06-14 15:10:56 1208

原创 Linux C语言:变量的作用域和生命周期(auto、register、static和extern)

3)auto说明的变量只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。(默认是随机值),不能时全局变量。如果一些变量使用频繁,为提高执行效率,允许将局部变量的值放在CPU中的寄存器中。变量在程序中使用时,必须预先说明它们的存储类型和数据类型。变量的值是存放在内存中的。

2024-06-13 17:09:15 988

原创 Linux C语言:#define和typedef

include是一个预处理指令,预处理这个动作发生在编译之前:#include 的作用是,在预处理时,将文件中的全部文本内容复制粘贴到#include所在的位置宏用 #define 声明,const 常量用 const + 数据类型 声明。宏最后没用分号,const 常量声明需要用分号表示语句结束。宏不需要用等号赋值,cosnt 常量需要用等号赋值。宏定义可以通过#undef来使之前的宏定义失效const常量定义后将在定义域内永久有效void f1()

2024-06-13 15:49:22 1324

原创 Linux C语言:指针函数、递归函数及用法

qsort()函数是C语言库函数中的一种排序算法,其用到的排序思想是快速排序(quicksort)。它的独特之处在于可以排序任意类型的数组元素(整形、浮点型、字符串和结构体类型)。

2024-06-13 15:02:38 599

原创 Linux C语言:函数的基本用法及传参

在程序运行过程中,将实际参数的值或者地址传递给被调用函数的形式参数,从而在函数中完成对数据处理和返回的过程。在C语言当中,参数的传递方式本质上只有一种,就是值传递。但为了更好区分理解,划分了三种方式。

2024-06-12 15:06:04 1036

原创 Linux C语言:多级指针(void指针和const)

1)其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数。2)argv参数是字符串指针数组,其各元素值为命令行中各字符串的首地址。对于void指针,在没有强制类型转换之前,不能进行任何指针的算术运算。定义另一个指针变量pps,并且把指针数组的首地址赋予指针pps。3)指针数组的长度即为参数个数argc。有一个一维字符指针数组ps[5]

2024-06-12 14:24:45 1146

原创 Linux C语言:字符指针与字符串

当一个字符指针指向一个字符串常量时,不能修改指针指向的对象的值。

2024-06-11 15:55:16 424

原创 Linux C语言:指针和二维数组

数据类型> (*)[表达式];方括号中的常量表达式表示指针加1,移动几个数据。1、二维数组名的理解。

2024-06-11 15:35:23 265

原创 Linux C语言:指针与数组

x[i] 、*(px+i)、*(x+i) 和px[i]具有完全相同的功能:访问数组第i+1个数组元素。

2024-06-11 15:20:52 486

原创 Linux C语言:指针的运算

1)C语言中除了8bit的char之外,还有16bit的short型,32bit的int型,对于位数大于 8位的处理器,必然存在如何将多个字节排序的问题。指针加上整数,指针减去整数, 指针递增,指针递减和两个指针相减。指针加减一个n的运算: px + n px - n。2)大小端指的是在存储器中,存放数据的字节顺序。移动步长是指针的目标。

2024-06-11 14:56:27 774

原创 Linux C语言:指针和指针变量

指针指向的位置是不可知的(随机的、不正确的、没有明确指向的)指向被释放的内存或者没有访问权限的内存的指针(非法访问)。

2024-06-07 15:52:19 1071

原创 Linux C语言:字符数组和字符串

字符数组是元素的数据类型为字符类型的数组。

2024-06-07 14:55:53 312

原创 Linux C语言:数组的定义和初始化

只有一个下标的数组。它在计算机的内存中是连续存储的。C语言中,一维数组的说明一般形式如下:<数据类型 > <数组名>[元素数量]元素数量必须是整数一旦创建不能改变元素的数量int a[10];(1)定义方式:数据类型 数组名[行数][列数];→元素个数=行数*列数(2)数组元素的存放顺序二维数组:按行序优先。

2024-06-06 17:06:11 593

原创 Linux-vi编辑器命令使用

有可能会遇到打开一个文件,并定位到指定行的情况例如,知道某一行代码有错误,可以快速定位到出错代码的位置可以使用以下命令打开文件提示:如果只带上+ 而不指定行号,会直接定位到文件末尾实操:用gedit 改错一个程序,编译看到行号 vi +行号。

2024-06-06 10:59:36 10650

原创 Linux C语言:控制语句(if switch)

一个if语句由一个布尔表达式后跟一个或多个语句组成。如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码将被执行。

2024-06-05 16:02:05 638

原创 Linux C语言:输入输出(printf scanf)

格式: int getchar( void);返值:正常,返回读取的字符的ASCLL码值;用“%c”格式符时,空格和转义字符作为有效字符输入。格式: int putchar( int c )格式说明:%[修饰符]格式字符,用于指定输出格式。则yy为1999, mm为10, dd为15。目前,scanf支持的格式字符很多,如下,则a为1234, b为‘a’, c为123。printf(“格式控制串”,输出表)则c1为a, c2为空格, c3为b。功能:从键盘读一字符。scanf(“格式控制串”,地址表)

2024-06-05 13:58:15 1039

原创 Linux C语言:运算符(下)

2、关系表达式的结果是bool类型,0(false),1(true),主要应用于条件判断语句和循环控制语句中。多个表达式可以用逗号分开,每个表达式的值分别运算,但整个表达式的值是最后一个表达式的值。如果条件表达式的值为假,整个表达式的值为表达式2的值。(3)对于关系运算符,可以将常量放左侧,变量放右侧,编译错误比执行错误更容易发现,危。如果条件表达式的值为真,整个表达式的值为表达式1的值。(表达式1, 表达式2,..., 表达式n)1、本质是比较运算,关系运算符组成的表达式,即为关系表达式。

2024-06-04 16:53:42 779

原创 Linux C语言:运算符(上)

将变量的值进行加1和减1的操作;自增和自减运算符都是一元运算符,只需要一个操作数;l可以作为前置运算符,也可以作为后置运算符前置: 运算符位于变量之前 ++i --i后置:运算符位于变量之后 i++ i-- 如果前置或后置作为一个单独的语句出现,并没有什么区别。

2024-06-04 16:07:13 1409

原创 Linux C语言: 数据类型

• /usr/include/limits.h文件中,有数据类型范围的定义# else# endifü关键字类型 变量名;int a;ü关键字类型 变量名1,变量名2, ...;int a, b;");

2024-06-03 17:34:25 1534

原创 Linux基本命令的使用(cp mv)

把cdemo文件夹下的extern_static开头的文件移动到了mydir文件夹下。mv 源文件 (夹)目标文件(夹) 也可以在移动的同时命名。使用条件:使用这个命令时必须保证源文件(夹)和目标文件(夹)在同一个路径下。把列出来的多个文件(夹)同时移动到目标文件夹下,文件(夹)之间以空格分隔。采用通配符将具有类似文件名或类型等的文件(夹)同时移动到目标文件夹下。1、如果目标文件已经存在或目标文件夹中含有同名文件,则复制之后。2、如果目标文件已经存在或目标文件夹中含有同名文件,则复制之后。

2024-05-31 17:29:33 632

原创 Linux基本命令的使用(mkdir rmdir rm)

• 方法二:[- p]选项 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。使用--recursive(-r 或-R)选项可删除每个给定的目录,-r, -R, --recursive 递归删除目录及其内容。-p,--parents 需要时创建目录的上层目录,若这些。-p,--parents 需要时创建目录的上层目录,若。交互模式删除文件或目录:rm -i file3.txt。• rm作用:删除文件或目录,它可以将一个或多个文。-i:交互模式,删除文件或目录前询问是否确认。

2024-05-31 16:14:19 553

原创 Linux基本命令的使用(ls cd touch)

通过一般应用程序或命令创建的文件,比如file.txt、file.tar,gz、test.c,这些文件虽然要用不同的程序或命令打开,但在linux中,都是常规文件,也称为普通文件。长短格式对照:[-a] == [--all] ,这里ls -a和ls --all的作用是等效的显示所有文件,包含以 . 开头的隐藏文件以及特殊目录。图中,对于一个存在的文件,使用了touch命令后,时间标签进行了更新,文件大。cd /home/linux/cdemo/⑦ -:普通文件,或者更准确的说,不属于其它几种类型的文件。

2024-05-31 15:06:30 921

原创 Linux命令行提示符

主机名:是当前系统的简写主机名,可以用hostname命令查看当前系统的主机名,当前系统的主机名是linux。比如,你现在在「东单地铁站」,那么故宫对你来说,就是坐一站地铁(天安门东站),出站,往前走500米,右拐。当你在「东单地铁站」时,故宫的相对路径就是:当前位置,坐一站地铁,出站,往前走500米,右拐。Ø ctrl + shift + n 在已经打开终端的基础上,新打开一个同路径的终端。当你在「天安门东站」时,故宫的相对路径就是:当前位置,出站,往前走500米,右拐。相对路径:相当于当前位置的路径。

2024-05-31 10:52:30 1025

原创 STM32-嵌入式常见代码英文缩写

SysTick,在32单片机中,这是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。类似于Disable。clock gating 时钟门控;RCC,Reset and Clock Control,意思是复位和时钟控制器,它负责单片机的复位以及时钟的配置。Stress level,应力水平,应力水平是指实际所受应力与破坏强度的比值,是材料力学中的一种术语,了解即可。

2024-05-24 15:06:07 1199

原创 学习笔记:C语言的32个关键字

8.signed //有符号9.unsigned //无符号10.struct //结构13.static //静态1.int //整数3.auto //自动11.union //联合2.long //长整型6.float //浮点7.short //短整型

2024-05-22 11:29:38 562

原创 c语言指针学习:交换变量值1

指针变量好比手术刀,能够获取地址信息,并通过`*`操作地址中的数值。- 不管指针变量带不带`*`, 它都是指针变量,包含了指定地址信息,而且可以通过`++`操作实现**连续地址空间的访问**,但是这样容易出现访问越界问题;你可以试一下上面第二份代码,在交换之后pt_x++,看看*pt_x输出的结果是2,不是8 - 区分好是 地址交换 还是 指针所指向的内容的交换。用*取地址中的值,交换指针地址中的值。*p : 所指向变量的。

2024-05-15 17:26:48 278

原创 学习心得:如何开始学习一款MCU

任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址方式基本上是类似的。因此,对于任何一款MCU,主要应从如下的几个方面来理解和掌握:1、MCU的特点:要了解一款MCU,首先需要知道就是其ROM空间、RAM空间、IO口数量、定时器数量和定时方式、所提供的外围功能模块(Peripheral Circuit)、中断源、工作电压及功耗等等。

2024-05-10 11:29:26 1051 1

原创 从零开始开发一款嵌入式产品的一些经验

需求定义用来描述产品的基本功能,对于公司来说,需求一般由该公司的市场销售部门或该公司的主要客户来制定;而对小公司或爱好者(就像armjishu.com里的爱好者一样),技术人员可以自己负责定义需求,并撰写成文档。通常需求定义是围绕以下几个因素而来:1)系统的用途(定义需要系统实现的各种功能)2)实际输入输出是何种方式实现的(为元器件的选型做参考)3)系统是否需要操作界面(涉及软件层操作系统的选型)

2024-04-22 14:56:58 541

原创 嵌入式C语言常见问题

当表达式 中存在 有符号类型 和 无符号类型 时,所有的 操作数 都自动转换为 无符号类型,因此 -20 变成了一个非常大的正整数,该表达式计算出的结果 大于6,答案是输出 > 6。11、中断的概念 当某个事件发生时,CPU 停止运行正在执行的程序,而转去执行处理该事件的程序,处理该事件后,返回原程序继续执行下去的过程;(7)指向函数的指针,该函数有一个整型参数,并返回一个整型数:int ( * a)(int);(5)有10个指针的数组,它的指针指向整型数:int * a[10];

2024-04-12 15:23:13 396

原创 学习笔记:STM32定时器(TIM)中断

Cortex-M4集成了嵌套式矢量型中断控制器(Nested Vectored Interrupt Controller (NVIC))来实现高效的异常和中断处理。NVIC实现了低延迟的异常和中断处理,以及电源管理控制。它和内核是紧密耦合的。凡是打断程序顺序执行的事件都称为异常(exception),比如HardFault,外部中断等。所以中断​也可以说是异常的一种。

2024-04-12 14:59:05 2114

原创 学习笔记:读写内部 FLASH

页擦除的处理方式也有两个思路,一个是根据要写入的大小,计算要擦除页数,对应擦除;)和批量擦除(Mass Erase), 这里不能使用批量擦除,会导致下载测试程序也被擦除,无法执行代码,因此只能使用页擦除。通常系统时钟为72MHz,则需要设置2个等待周期(LATENCY),否则读写Flash可能出,导致死机等情况。Flash的起始地址,从该地址之后,存放本程序,我 们只能操作本程序占用空间之后的。如果是页擦除,读取被擦除的页并检查;前面提到,不同的系统时钟,需要设置对应的等待周期,以确保能正确读取内部。

2024-04-07 16:47:26 2039

原创 简单状态机的学习

状态机,或称有限状态机FSM(Finite State Machine),表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,FSM是一种逻辑单元内部的一种高效编程方法,在服务器的编程中,服务器可以根据不同状态或者消息类型进行相应的处理逻辑,使得程序逻辑更加清晰易懂,是一种重要的编程思想。状态机有3要素:状态、事件与响应状态:系统处在什么状态?事件:发生了什么事?响应:此状态下发生了这样的事,系统要如何处理?

2024-04-02 11:34:03 1828

原创 C语言编程基础

[TOC语言编程基础C语言入门text段:存放程序代码data段:存放有初值的全局变量和常量bss段:存放未被初始化的全局变量C数据类型C语言基本数据类型、变量与常量的定义、sizeof()函数、变量存储类型C常用关键字#define:宏定义,用来定义一个可以替代值的宏const关键字:定义一个只读的变量static关键字:修饰局部变量,可以在函数调用之间保持局部变量的值;修饰全局变量或函数时,会使变量或函数的作用域限制在声明它的文件内。

2024-03-13 14:43:36 1002

原创 STM32 PWM输出原理和直流电机PWM驱动原理详解及例程

而不同的定时器可能在不同的总线上面,APB1总线的频率是36MHz,APB2的频率是72MHz,假设我设置一个在APB1总线上的定时器,预分频数设置成为36,那么我的这个定时器就被设置成了36 * 10 ^ 6 / 36 Hz的这么一个 计数器 ,1s之内可以数1000000个数。你也可以根据能量守恒来想啊,电机转起来过后,线圈电阻恒定不变,功率恒定不变,两端电压峰值也恒定不变,那么这样情况下,电源电压图形上占空比的不同将导电机在这段时间内致消耗能量的不同,以此达到转化的机械能的不同,转速是不是也不同了。

2024-01-09 13:53:11 2173

原创 return; return 0; return -1; return 1之间的区别

与return 1相同。表示返回一个代数值,一般用在子函数结尾。表示程序异常终止,即告诉系统程序异常。如果什么都不接的话,其实就是void类型函数的返回,返回后不再执行return后面的语句。return 0:一般用在主函数结束时,表示程序正常终止,即告诉系统程序正常。表示返回一个代数值,一般用在子函数结尾。表示程序异常终止,即告诉系统程序异常。如果函数执行成功返回0,不成功返回非0,一般情况下非0值常用-1来表示。

2023-12-05 15:53:17 2842

原创 Static关键字的用法和详解

学习笔记:static在当中的用法。

2023-12-05 15:52:32 220

原创 C语言中32个基本关键字总结

1、(1)char 占一个字节,也就是 8 个二进制位,但它表示的是有符号的类型,所以表示的范围是 -128~127;表示无符号的类型,所以表示的范围是 0~255(2)double 占的字节:16 位编译器下,double 占 8 个字节;32 位编译器下,double 占 8 个字节;64 位编译器下,double 占 8 个字节。(3)enum 是计算机编程语言中的一种数据类型。:在实际问题中,有些变量的取值被限定在一个有限的范围内。

2023-12-05 15:51:47 3091

原创 stm32f103定时器配置与时间计算公式

这里的频率的意思就是1s中记 Tclk/(psc+1)M个数 (1M=10的6次方) ,每记一个数的时间为(psc+1)/Tclk ,很好理解频率的倒数是周期,这里每一个数的周期就是(psc+1)/Tclk 秒。我们将分配的时钟进行分频,指定分频值为psc,就将我们的Tclk分了psc+1,我们定时器的最终频率就是Tclk/(psc+1) MHz。* 然后指定重装载值arr,这个重装载值的意思就是当 我们的定时器的计数值 达到这个arr时,定时器就会重新装载其他值.Tout:定时器溢出时间(单位为us)

2023-11-27 17:29:17 2043

基于stm32单片机的温度报警设计

基于stm32单片机的温度报警设计

2023-06-20

空空如也

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

TA关注的人

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